我是SailsJS的新手,我想询问专家意见我的实施是否合适。在SailsJS passport authentication package的帮助下,我能够进行某种身份验证。
/controller/members.js:
module.exports = {
//deny all non authenticated users from accessing this controller
'*':function(req,res,next){
if(!req.user){
res.view(403);
}else{
next();
}
},
//once user is authenticated through passport, it is redirected here
'welcome':function(req,res){
res.view();
},
//when user clicks logout
'logout':function(req,res){
req.logout();
res.redirect("/login");
},
};
但是,正如您所看到的,输入策略是在控制器本身内编码的。我根本没有使用政策。所以在包的帮助下,SailsJS中的策略层完全没用?这是实施passportJS的正确方法吗?如果我错了,请纠正我,我认为我绝对是。
答案 0 :(得分:1)
您应该能够使用策略来实现上述内容。如果您创建一个名为 isAuthenticated.js 的政策,您可以将规则从控制器移到其中:
module.exports = function(req, res, next) {
if(!req.user){
res.view(403);
} else {
next();
}
};
(并从控制器中删除'*'方法)。然后,您可以在 config / policies.js 文件中将“isAuthenticated”指定为策略,并从那里控制访问权限:
module.exports.policies = {
members: {
'*': 'isAuthenticated',
'welcome': true,
'logout': true
}
}
答案 1 :(得分:0)
要在使用passport实现身份验证时使用策略,您必须将它们配置为快速中间件(在config / express.js中),而不是将它们添加为控制器。
看看这个项目,看看它是如何完成的: