我有一个带有 Windows 身份验证的 MVC 5 项目。
我使用默认的 WindowsTokenRoleProvider 作为我的角色提供程序,它适用于以下情况:
[CustomAuthorization(Roles = "DOMAIN\example_group")]
public ActionResult Action()...
它工作得很好。当我想使用自定义角色时,问题就开始了,例如:“批准人”。为了检查谁是真正的审批者,我必须查询一个特殊的表并使用自定义逻辑来确定当前人是否是审批者。
为了做到这一点,我重写了AuthorizeCore
of CustomAuthorize
,并写了如下内容:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if(CheckIfCurrentUserIsAnApprover()){
return true;
}
...........
}
但是当我添加另一个角色时会发生什么,比如说Managers
,我将不得不添加:
if(CheckIfCurrentUserIsManager()){
return true;
}
我怎样才能使它更通用?