Passport身份validation在sails.js应用程序中不起作用
我有一个Sails JS应用程序。 我正在尝试使用Passport.js身份validation层sails-generate-auth来设置身份validation 。 我已经按照他们的文档中给出的步骤configuration了我的应用程序。
但是,当我解除我的风帆应用程序,身份validation不起作用。 我能够访问控制器,即使我没有login(这不是redirect到我的login页面)。
我在api/policies/passport.js
添加了一个console.log
语句,如下所示:
module.exports = function (req, res, next) { passport.initialize()(req, res, function () { passport.session()(req, res, function () { res.locals.user = req.user; console.log(req.user); // added by me next(); }); }); };
现在,当我在login之前或登出之后访问控制器时,其打印undefined
。 但是,当我login时,它打印我的用户数据。 任何想法,为什么它不检查身份validation?
我正在使用本地身份validation策略,我已经注释了所有其他(Twitter,Facebook的…)
护照没有禁止访问控制器的政策。 为此,您必须创build另一个策略。
看到这个链接了解更多细节。
上面的答案提供了有用的信息。 我想说一说。
sails-generate-auth,如果用户没有login,默认情况下不会拒绝对控制器的访问。为此,您可以在api/policies/
创build另一个策略。 例如:创buildsessionAuth
策略如下:
module.exports = function(req, res, next) { if (req.user) { return next(); } return res.forbidden('You are not permitted to perform this action.'); };
而不是显示禁止页面,您也可以呈现login页面。 为此,您需要访问AuthController.login。 所以,在config/policies
添加config/policies
如下:
'*': ['passport', 'sessionAuth'], 'auth': { '*': ['passport'] }
这有助于限制访问除authentication控制器之外的所有控制器,如login,注销和注册(如果用户未login)。
- 是否可以在Express上的白名单路由中应用基本身份validation/中间件?
- 将未经身份validation的用户redirect到使用node.js和angularjs的默认URL
- Nodejs:用户信息/数据库和authentication(Passport)
- 为什么http-auth不能和express.static中间件一起工作?
- CORS问题从React应用程序>节点服务器>redirect到Google OAuth2身份validation发出AJAX请求
- 限制对所有路线的访问权限
- 在unit testing中嘲笑Passport.js(本地策略)
- 我如何使用node.js和PHP来请求谷歌浏览器中的客户端js的大查询authentication
- Auth0 req.user.sub返回false