我想确认持有者令牌中的声明是每个API调用的最新版本,以便我确定给定用户仍然可以访问给定方法。
例如,对于使用[Authorize(Roles = "admin")]
修饰的方法,我希望在执行调用时确保用户是管理员,而不是在令牌出现时用户是管理员。
经过一番环顾四周,我打算到
写一个public class VerifyTokenAttribute : System.Web.Http.AuthorizeAttribute
全局应用它并在OnAuthorization
内检查操作是否用Authorize
修饰,如果是,请从数据库中获取用户信息并确认角色匹配。
有更好的方法吗?
答案 0 :(得分:0)
我打算做基本相同的事情。在我的例子中,存在"系统特征的定义"其中系统中的角色可以执行许多系统功能。角色可以执行的功能可能会有所不同,管理员可以随时更改它们。 所以基本上,在每个请求中,我应该抓住用户拥有的所有角色,并为每个角色获取它可以执行的所有系统功能。我想过创建一个如下所示的属性:[CustomAuthorize(" Feature_Name")]并将其应用到控制器(或操作)级别。然后,我需要检查" Feature_Name"是当前用户可以根据其角色执行的功能。 当然,每次都需要访问数据库。 可能的增强是将此信息缓存在缓存服务器中,并且每次管理员更改用户权限时缓存都将失效。这样的事情。 所以,正如Mayu所说:有更好的方法吗?