使用Web API 2承载令牌验证令牌中的声明/角色

时间:2016-06-22 04:51:50

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

我想确认持有者令牌中的声明是每个API调用的最新版本,以便我确定给定用户仍然可以访问给定方法。

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

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

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我打算做基本相同的事情。在我的例子中,存在"系统特征的定义"其中系统中的角色可以执行许多系统功能。角色可以执行的功能可能会有所不同,管理员可以随时更改它们。 所以基本上,在每个请求中,我应该抓住用户拥有的所有角色,并为每个角色获取它可以执行的所有系统功能。我想过创建一个如下所示的属性:[CustomAuthorize(" Feature_Name")]并将其应用到控制器(或操作)级别。然后,我需要检查" Feature_Name"是当前用户可以根据其角色执行的功能。 当然,每次都需要访问数据库。 可能的增强是将此信息缓存在缓存服务器中,并且每次管理员更改用户权限时缓存都将失效。这样的事情。 所以,正如Mayu所说:有更好的方法吗?