在实时web应用程序中实现基于事件的授权的最佳方式是什么?



我目前正在做一些关于在实时web应用程序中实现基于事件的授权的最佳方法的研究。与普通的基于REST调用的应用程序相比,发布的事件是需要在服务器上进行授权的某种api调用,因为存在不同类型的授权级别。在当前的REST应用程序中,授权通常在第一步(令牌验证)中处理,然后根据调用所需的用户权限检查基于调用的用户权限。在实时web应用程序中也应该这样做吗?或者是否需要在应用程序架构方面进行某种思维转变?

当前应用程序的代码示例(对于实时需求可能不是一个好示例,但它非常好地显示了所需的授权类型):

app.get('/api/profile/email', passport.authenticate('bearer', {
    session: false
}), authorize('user.profile.email.read'), function (req, res) {
    // Do something and respond
});

我期待着你们的一些伟大的投入!

我做过的一种方法(如果使用套接字,让我们说)是在初始登录后使用存储在redis中的令牌或刷新令牌。它使用身份验证中间件对令牌进行检查,以确保它可以继续执行,否则将发送错误。如果你的代码是正确的,你可以传递令牌,把它拉出来,并使用中间件检查它。

   io.use(function(socket,next){
       var token = socket.request._query.tokenOfImmortality;
       tokenHandler.verify(token,next); //Function handles checking redis for access
   }

相关内容

  • 没有找到相关文章