我正在实施 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对于攻击者的安全性的重要性) 可能我不太理解这个概念。 有人可以解释一下吗?