加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何使用PassportJS保护API端点?

发布时间:2020-12-17 08:20:48 所属栏目:安全 来源:网络整理
导读:我的应用程序使用Express和AngularJS.我正在使用express来处理通过静态的角度代码的基本web搜索.角度代码使用命中由express托管的API端点的服务.我只希望在用户通过身份验证后可以访问API端点.我怎样才能通过PassportJS实现这一目标? 我在 github上上传了一
我的应用程序使用Express和AngularJS.我正在使用express来处理通过静态的角度代码的基本web搜索.角度代码使用命中由express托管的API端点的服务.我只希望在用户通过身份验证后可以访问API端点.我怎样才能通过PassportJS实现这一目标?
我在 github上上传了一个我一直在研究的Angular-Express project.

它仍在进行中.我希望它有所帮助.

它使用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);
  }
},

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读