我得到了权限,角色和授权的概念。但是我无法掌握在多个位置添加时授权的工作方式。让我解释一下。
我有一个具有以下属性的应用程序服务类:
[AbpAuthorize(PermissionNames.A)]
在该类中,我有一个具有以下属性的方法:
[AbpAuthorize(PermissionNames.B)]
在我的世界中,B权限应优先于A权限,但是吗?对我来说,感觉并不像。有没有办法让我完成相同的功能?更复杂的是,A权限是MultiTenancySides.Host
许可,而B则不是。
谢谢!
答案 0 :(得分:0)
在我的世界中,B权限应优先于A权限,但是吗?
否,单独的AbpAuthorize
属性是AND
条件。
我是否可以完成[override]功能?
根本不同。您必须重写IAuthorizationHelper
。
public class OverridingAuthorizationHelper : AuthorizationHelper
{
public OverridingAuthorizationHelper(IFeatureChecker featureChecker, IAuthorizationConfiguration authConfiguration)
: base(featureChecker, authConfiguration)
{
}
public override Task AuthorizeAsync(IEnumerable<IAbpAuthorizeAttribute> authorizeAttributes)
{
if (authorizeAttributes.Any())
{
authorizeAttributes = new List<IAbpAuthorizeAttribute> { authorizeAttributes.First() };
}
return base.AuthorizeAsync(authorizeAttributes);
}
}
然后将其替换为PreInitialize
模块的*.Core
方法。
// using Abp.Configuration.Startup;
public override void PreInitialize()
{
Configuration.ReplaceService<IAuthorizationHelper, OverridingAuthorizationHelper>();
}