![](/img/trans.png)
[英]How to retrieve a JWT access token from Azure B2C using `NextAuth.js`
[英]how to completely destroy client side session with NextAuth.js & AWS Cognito
我正在使用 Next.js 和 NextAuth.js 以及亚马逊 Cognito 设置,我的问题是当我在注销后立即单击登录链接时,我的用户直接登录而无需提供凭据。
我的 [...nextauth].ts 看起来像这样:
import NextAuth from 'next-auth';
import CognitoProvider from 'next-auth/providers/cognito';
export const authOptions = {
providers: [
CognitoProvider({
clientId: process.env.COGNITO_CLIENT_ID || '',
clientSecret: process.env.COGNITO_CLIENT_SECRET || '',
issuer: process.env.COGNITO_ISSUER_URL,
}),
],
debug: process.env.NODE_ENV !== 'production' ? true : false,
};
export default NextAuth(authOptions);
对于身份验证,我使用 Next helper 方法 signIn 和 signOut:
interface HomeProps {
appTitle: string;
}
const Home: NextPage<HomeProps> = ({ appTitle }) => {
const { data: session, status } = useSession();
if (status === 'authenticated') {
return (
<>
<Head>
<title>{appTitle}</title>
</Head>
<p>Signed in as {session.user?.email}</p>
<Link href="/">
<a
onClick={() => {
signOut();
}}
>
Log out
</a>
</Link>
</>
);
}
return (
<>
<Head>
<title>{appTitle}</title>
</Head>
<Link href="/">
<a
onClick={(event) => {
event.preventDefault();
signIn('cognito', {
callbackUrl: 'http://localhost:3000',
});
}}
>
Sign In
</a>
</Link>
</>
);
};
export default Home;
我假设客户端在注销后保留了有关先前登录用户的一些信息,但我不知道哪些数据以及它位于何处。
我想在注销后完全删除所有信息,以便在单击登录时始终要求用户提供凭据。 任何帮助,将不胜感激。
有一些解决方法涉及覆盖内置的 SignOut 方法,但显然,如果可以将其作为一项功能添加到 nextauth 中,那将是理想的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.