如何解决Next Auth:成功登录前重定向页面
我想使用下一个身份验证进行自定义登录。
我想要的是,在检查我的电子邮件和密码为真后,我想重定向到 google auth 页面,在 google auth true 之后,我想将令牌设置为会话并重定向到主页。有没有可能做成这样?
//This is the flow
Login -> google Auth -> Home
这是登录页面
//Front End
const handler = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
setLoading(true);
const res = await signIn("credentials",{
redirect: false,data: emailRef.current?.value,password: passwordRef.current?.value,});
if (res?.error) {
toast.error(res?.error);
setLoading(false);
} else {
Router.replace("/");
Router.events.on("routeChangeComplete",success);
}
};
这是 API 页面
//API
export default NextAuth({
session: {
jwt: true,},providers: [
Providers.Credentials({
async authorize(credentials: credentialsData,req: NextApiRequest) {
let client;
try {
client = await ConnectDatabase();
} catch (error) {
throw new Error("Failed connet to database.");
}
const checkEmail = await client
.db()
.collection("users")
.findOne({ email: credentials.data });
const checkPhone = await client
.db()
.collection("users")
.findOne({ phone: credentials.data });
let validData = {
password: "",email: "",};
if (!checkEmail && !checkPhone) {
client.close();
throw new Error("Email atau No HP tidak terdaftar.");
} else if (checkEmail) {
validData = checkEmail;
} else if (checkPhone) {
validData = checkPhone;
}
const checkPassword = await VertifyPassword(
credentials.password,validData.password
);
if (!checkPassword) {
client.close();
throw new Error("Password Salah.");
}
client.close();
return validData;
},}),],callbacks: {
async session(session) {
const data = await getSelectedUser(session.user!.email!);
session.user = data.userData;
return Promise.resolve(session);
},});
在上面的例子中我没有使用谷歌身份验证,所以登录成功后它会立即重定向到主页
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。