我是SailsJS的新手,我想征求专家意见我的实现是否可以。在SailsJS护照身份验证包的帮助下,我能够进行某种身份验证。
/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");
},
};
但是,正如您从中看到的,enter策略是在控制器本身中编码的。我根本没有使用政策。那么在包的帮助下,SailsJS中的策略层就完全没用了?这是实现passportJS的正确方法吗?如果我错了,请纠正我,我想我肯定错了。
您应该能够使用策略来实现上述功能。如果您创建了一个名为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
}
}
要在使用passport实现身份验证时使用策略,必须将它们配置为express中间件(在config/express.js中),而不是将它们添加为控制器。
看看这个项目,看看它是如何完成的:
Sails Social Auth