【发布时间】:2021-09-10 12:24:50
【问题描述】:
我正在尝试使用 NextAuth.js 和 Cognito 在我的 Next.js 应用程序中实现身份验证。 这是我的问题:当调用 jwt 回调时,我想在会话 3 中存储令牌和其他内容,但令牌最大长度为 4096 字节。我该如何实施? 提前致谢!
providers: [
Providers.Cognito({
clientId: process.env.COGNITO_CLIENT_ID,
domain: process.env.COGNITO_DOMAIN,
idToken: true,
scope: 'openid profile email aws.cognito.signin.user.admin',
}),
],
callbacks: {
async jwt(token, user, account, profile) {
// Initial sign in
if (account && user) {
// Max 4096 bytes
return {
accessToken: account.accessToken,
idToken: account.idToken, // Too long
accessTokenExpires: Date.now() + account.expires_in! * 1000,
refreshToken: account.refresh_token,
user, // Too long
profile, // Too long
};
}
// Return previous token if the access token has not expired yet
if (Date.now() < (token.accessTokenExpires as number)) {
return token;
}
// Access token has expired, try to update it
return refreshAccessToken(token);
},
async session(session, token) {
const sessionToken = session;
sessionToken.accessToken = token.accessToken;
sessionToken.idToken = token.idToken;
sessionToken.profile = token.profile;
return sessionToken;
},
},
});
【问题讨论】:
标签: typescript jwt next.js amazon-cognito next-auth