我已经安装了 Thinktecture.IdentityModel.Core 包。
假设我已在 web.config 文件中注册了AuthorizationManager
的自定义实现。
public class AuthorizationManager : ClaimsAuthorizationManager {
public override Boolean CheckAccess(AuthorizationContext context) {
// authorization implementation
}
}
应用程序数据库中为用户角色定义了权限。因此 User
可能对 Read
和 {{1}具有 Blogs
权限} 资源,如果它是 Arts
角色。
我看到的工作流程:
BasicUser
拨打 ClaimsAuthorizationAttribute
ClaimsAuthorizationManager
使用步骤2中的声明在内部检查身份验证Cookie 我是对的吗?
或者我应该在ClaimsAuthorizationManager
方法中进行数据库权限查找?这会按照请求进行吗?
我如何将db-fecthed action-resources转换/附加到身份声明中?
答案 0 :(得分:1)
在checkaccess方法中,您不应该查找数据库。您应该检查Inside AuthorizationContext中的声明是否允许用户访问操作/资源。声明应在身份验证期间填写。
在登录时,您可以从您的数据库中获取角色并将其添加到声明中,然后声明可以存储在cookie或会话中,以避免在每个请求中获取它们。使用正确的配置本机(并安全地)处理声明的Cookie或会话存储。