【问题标题】:Verify claims/roles in token with Web API 2 bearer token使用 Web API 2 不记名令牌验证令牌中的声明/角色
【发布时间】:2016-06-22 04:51:50
【问题描述】:

我想确认不记名令牌中的声明在每次 API 调用时都是最新的,以便我确定给定用户仍然可以访问给定方法。

例如,对于以[Authorize(Roles = "admin")] 装饰的方法,我想确保在执行调用时用户是管理员,而不是在发出令牌时用户是管理员。

环顾四周后,我打算 写一个public class VerifyTokenAttribute : System.Web.Http.AuthorizeAttribute 全局应用它并在OnAuthorization 内部检查动作是否用Authorize 装饰,如果是,从数据库中获取用户信息并确认角色匹配。

有没有更好的办法?

【问题讨论】:

    标签: asp.net asp.net-web-api asp.net-web-api2 webapi2


    【解决方案1】:

    我打算做基本相同的事情。就我而言,存在“系统功能”的定义,其中系统中的角色可以执行许多系统功能。角色可以执行的功能可能会有所不同,管理员可以随时更改它们。 所以基本上,对于每个请求,我都应该获取用户拥有的所有角色,以及每个角色可以执行的所有系统功能。我考虑过创建一个如下所示的属性:[CustomAuthorize("Feature_Name")] 并将其应用于控制器(或操作)级别。然后,我需要检查“Feature_Name”是否是当前用户可以根据其角色执行的功能。 当然,这每次都需要访问数据库。 一个可能的改进是将此信息缓存在缓存服务器中,并且每次管理员更改用户权限时缓存都会失效。类似的东西。 所以,正如 Mayu 所说:有没有更好的方法?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 2017-08-16
      • 2018-01-24
      • 2014-10-13
      • 2021-01-19
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      相关资源
      最近更新 更多