Thinktecture声称授权工作流程。它是如何工作的?

时间:2015-01-26 09:43:24

标签: c# .net asp.net-mvc claims-based-identity thinktecture-ident-model

我已经安装了 Thinktecture.IdentityModel.Core 包。

假设我已在 web.config 文件中注册了AuthorizationManager的自定义实现。

public class AuthorizationManager : ClaimsAuthorizationManager {
    public override Boolean CheckAccess(AuthorizationContext context) {
        // authorization implementation
    }
}

应用程序数据库中为用户角色定义了权限。因此 User 可能对 Read {{1}具有 Blogs 权限} 资源,如果它是 Arts 角色。

我看到的工作流程:

  1. 在登录时,您将数据库查询经过身份验证的用户<所有已分配角色中获取所有操作资源对 < / strong>
  2. 然后你必须将声明(基于数据库查询结果)添加到身份
  3. BasicUser 拨打 ClaimsAuthorizationAttribute
  4. ClaimsAuthorizationManager 使用步骤2中的声明在内部检查身份验证Cookie
  5. 我是对的吗?

    或者我应该在ClaimsAuthorizationManager方法中进行数据库权限查找?这会按照请求进行吗?

    我如何将db-fecthed action-resources转换/附加到身份声明中?

1 个答案:

答案 0 :(得分:1)

在checkaccess方法中,您不应该查找数据库。您应该检查Inside AuthorizationContext中的声明是否允许用户访问操作/资源。声明应在身份验证期间填写。

在登录时,您可以从您的数据库中获取角色并将其添加到声明中,然后声明可以存储在cookie或会话中,以避免在每个请求中获取它们。使用正确的配置本机(并安全地)处理声明的Cookie或会话存储。