NextAuth.js 回调Url 和登录后的首次尝试

问题描述 投票:0回答:1

我正在实施 NextAuth 身份验证,但有一些事情我仍然不清楚。我解释。 良好地使用 CredentialsProviders 和 signIn() 执行身份验证(意味着在第一次尝试期间避免会话状态为“未验证”)。该文档给出了部分解决方案: 您可以以确保始终拥有有效会话的方式使用 useSession() 我使用默认行为通过实现这样的signIn()方法来满足这个建议 const login_user = async () => { const response = await signIn("Credentials", { redirect: false, username: username, password: password, }); if (response?.error) { setError(response.error); } else { setError(null); } //If user signed successfully we redirect to the dashboard page if (response.url && response.ok === true) { router.push("/dashboard/general"); } };

而且效果很好。
现在总是在文档中,他们说我们可以将 
callbackUrl

添加到signIn() 这是成功登录后要重定向用户的 url 。 我在 [...nextauth].ts 文件中配置重定向回调,如下所示 redirect: async ({ url, baseUrl }) => { return url.startsWith(baseUrl) ? Promise.resolve(url) : Promise.resolve(baseUrl); },

并修改signIn()方法,在react组件中添加callbackUrl,如下所示。

const login_user = async () => { const response = await signIn("Credentials", { redirect: false, username: username, password: password, callbackUrl: "/dashboard/general", }); if (response?.error) { setError(response.error); } else { setError(null); } };

但是当用户登录时,他不会被重定向。
我的问题是:
如果在登录或第一次尝试登录后无法将用户重定向到指定的callbackUrl,那么callbackUrl在该位置的作用是什么?

我知道callbackUrl对于攻击者的安全性的重要性) 可能我不太理解这个概念。 有人可以解释一下吗?

url redirect next.js callback next-auth
1个回答
0
投票

© www.soinside.com 2019 - 2024. All rights reserved.