我的应用程序使用Express和AngularJS.我正在使用express来处理通过静态的角度代码的基本web搜索.角度代码使用命中由express托管的API端点的服务.我只希望在用户通过身份验证后可以访问API端点.我怎样才能通过PassportJS实现这一目标?
我在
github上上传了一个我一直在研究的Angular-Express
project.
原文链接:https://www.f2er.com/angularjs/141433.html它仍在进行中.我希望它有所帮助.
它使用PassportJ进行用户身份验证,是服务器端授权的基本示例.它演示了如何仅对经过身份验证的用户或仅具有admin角色的用户访问API调用.这是在server / routes.js中实现的,调用中间件函数ensureAuthenticated,以及在server / authentication.js中定义的ensureAdmin.
在routes.js中
// anybody can access this app.get('/api/test/users',api.testUsers); // only logged-in users with ADMIN role can access this app.get('/api/users',authentication.ensureAdmin,api.testUsers); // only logged-in users can access this app.get('/api/books',authentication.ensureAuthenticated,api.books);
在authentication.js中
ensureAuthenticated: function(req,res,next) { if (req.isAuthenticated()) { return next(); } else { return res.send(401); } },ensureAdmin: function(req,next) { // ensure authenticated user exists with admin role,// otherwise send 401 response status if (req.user && req.user.role == 'ADMIN') { return next(); } else { return res.send(401); } },