我正在构建一个自定义的credentialProvider与下一个auth,这是我的逻辑登录
credentials: {
email: { label: 'email', type: 'email', placeholder: 'Your email' },
password: { label: 'Password', type: 'password' },
},
async authorize(credentials) {
try {
const { email, password } = credentials;
const login: Awaited<Promise<LoginResponse>> = await fetch(
`${process.env.NEXT_PUBLIC_API_URL}${process.env.NEXT_PLUBIC_API_LOGIN}`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, password }),
},
)
.then((res) => res.json() as Promise<LoginResponse>)
.then((json) => json);
const {
token,
user: { _id, name },
} = login;
if (!token || !name || !_id) return null;
return {
token,
name,
email,
id: _id,
};
} catch (error) {
return null;
}
},
}),
如你所见,我的用户是一个对象,其类型为
{
token:string;
name:string,
email:string,
id:string
}
但是,在我的jwt的回调函数中,USER没有TOKEN键。
callbacks: {
jwt: async ({ token, user }) => {
const isSignIn = !!user;
const currentDateInSeconds = Math.floor(Date.now() / 1000);
const expirateDateInSeconds = Math.floor(7 * 24 * 60 * 60);
if (isSignIn) {
token.email = user.email;
token.name = user.name;
token.token = user.token; //<<<-- error on this line
token.id = user.id;
token.expiration = Math.floor(
currentDateInSeconds + expirateDateInSeconds,
);
}
return token;
},
},
我需要扩展类型User|适配器用户?我需要做什么?
1条答案
按热度按时间nvbavucw1#
您需要扩展/覆盖next-auth中的基本对象