Passport JS - 一个登录表单 - 根据用户角色重定向到不同的 URI
Passport JS - One Login Form - Redirect to Different URI's Depended on User Role
我正在使用 Passport JS 来处理身份验证,并使用 Express JS 来处理我的路由。
目前,我有一个登录路由,成功后会转到 /teacher
URI。 (如下图)
app.post('/login', passport.authenticate('local-login', {
successRedirect: '/teacher', // redirect to the teacher profile section
failureRedirect: '/login', // redirect back to the login page if there is an error
failureFlash: true // allow flash messages
}));
我的申请有三个主要部分,老师,家长,学生。
我已经构建了应用程序的 Teacher 端,但现在希望构建 Student 和 Parent,
在我的 Passport JS 会话中,我有 req.user.group
告诉我用户是教师、家长还是学生。
是否有任何方法可以根据登录应用程序的用户类型重定向到不同的位置。
E.G 如果家长要登录,它将转到 /parent
和学生 /student
谢谢。
app.post('/login', passport.authenticate('local-login', function(err, user, info){
var error = err || info;
if (error) return res.status(401).json(error);
if (!user) return res.status(404).json({message: 'Something went wrong, please try again.'});
else {
if(req.user.group==='Teacher'){
res.redirect('/teacher');
}
else if(req.user.group==='Parent'){
res.redirect('/parent');
}
else{
res.redirect('/student');
}
}
}));
我正在使用 Passport JS 来处理身份验证,并使用 Express JS 来处理我的路由。
目前,我有一个登录路由,成功后会转到 /teacher
URI。 (如下图)
app.post('/login', passport.authenticate('local-login', {
successRedirect: '/teacher', // redirect to the teacher profile section
failureRedirect: '/login', // redirect back to the login page if there is an error
failureFlash: true // allow flash messages
}));
我的申请有三个主要部分,老师,家长,学生。
我已经构建了应用程序的 Teacher 端,但现在希望构建 Student 和 Parent,
在我的 Passport JS 会话中,我有 req.user.group
告诉我用户是教师、家长还是学生。
是否有任何方法可以根据登录应用程序的用户类型重定向到不同的位置。
E.G 如果家长要登录,它将转到 /parent
和学生 /student
谢谢。
app.post('/login', passport.authenticate('local-login', function(err, user, info){
var error = err || info;
if (error) return res.status(401).json(error);
if (!user) return res.status(404).json({message: 'Something went wrong, please try again.'});
else {
if(req.user.group==='Teacher'){
res.redirect('/teacher');
}
else if(req.user.group==='Parent'){
res.redirect('/parent');
}
else{
res.redirect('/student');
}
}
}));