我的应用程序使用Express和AngularJS。我正在使用express通过静态处理角度代码的基本网络设置。角度代码使用的服务会影响express托管的API端点。我只希望用户经过身份验证后才能访问API端点。如何通过PassportJS完成此操作?
我已经在github上上传了一个Angular-Express 项目。
仍在进行中。希望对您有所帮助。
它使用PassportJs进行用户身份验证,并且是服务器端授权的基本示例。它演示了如何使API调用仅对经过身份验证的用户或具有管理员角色的用户可用。这在实现server/routes.js调用中间件功能ensureAuthenticated,并且ensureAdmin其在所定义server/authentication.js
server/routes.js
ensureAuthenticated
ensureAdmin
server/authentication.js
在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, res, 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); } },