【发布时间】:2018-04-26 02:32:28
【问题描述】:
我需要使用passport-local-role 节点模块实现基于角色重定向到不同页面的功能。
例如:
'管理员' => http://domainname/admin
'用户' => http://domainname/profile
【问题讨论】:
标签: node.js express passport.js passport-local
我需要使用passport-local-role 节点模块实现基于角色重定向到不同页面的功能。
例如:
'管理员' => http://domainname/admin
'用户' => http://domainname/profile
【问题讨论】:
标签: node.js express passport.js passport-local
我建议您在客户端为每个角色创建单独的目录。在服务器端,将用户角色存储在会话中。然后创建一个这样的函数
function getRoot(request, response) {
if (request.user && request.user.roleName === 'visitor') {
response.sendFile(path.join(__dirname, '../', 'client/visitor/visitor.html'));
}
else if (request.user && request.user.roleName === 'user') {
response.sendFile(path.join(__dirname, '../', 'client/user/user.html'));
}
else if (request.user && request.user.roleName === 'admin') {
response.sendFile(path.join(__dirname, '../', 'client/admin/admin.html'));
}
else {
response.sendFile(path.join(__dirname, '../', 'client/visitor/visitor.html'));
}
}
使用passport 包:
passport.use(new LocalStrategy(function (username, password, done) {
if ((!username && !password) || !username || !password) {
return done(null, false, {
message: invalidUsernameOrPassword
});
} else {
visitor.login(username, password)
.then(function (result) {
return done(null, result);
})
.catch(function (error) {
return done(null, false, error);
});
}
}));
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (user, done) {
done(null, user);
});
【讨论】: