ear*_*ing 4 c# asp.net-mvc authorization controller asp.net-web-api
我正在尝试设置我的控制器上的方法的默认访问权限,所以我已经添加了[Authorize]我的属性ApiController.
在大多数情况下,除非被[AllowAnonymous]属性覆盖,否则这样可以正常工作.
现在我想在混音中添加另一个级别.对于默认情况下我的授权方法,我希望它们需要特定的角色(例如admin),所以我将控制器级别属性更新为[Authorize(roles="admin")].除了少数例外,我不关心它们是什么角色(只是经过身份验证就足够了).
我认为我可以坚持在控制器级别设置Authorize属性并在单个方法级别覆盖它,但这似乎不会像以前那样工作[AllowAnonymous].
有没有关于如何解决这个问题的建议,而不必记得用默认访问级别装饰每个新方法?有点像[Authorize(roles="*")]?即使我需要一个默认角色,每个用户都是AuthenticatedUsers的一部分,那也没关系.
如何创建标记属性?AllowAnonymous是一个这样的标记,BTW.当标记存在时,创建您自己的Authorize属性并清除角色.
[MyAuth(Roles = "admin")]
public class ValuesController : ApiController
{
[ExemptRoles]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
public class ExemptRolesAttribute : Attribute { }
public class MyAuthAttribute : AuthorizeAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
if (actionContext.ActionDescriptor.GetCustomAttributes<ExemptRolesAttribute>().Any())
base.Roles = String.Empty;
base.OnAuthorization(actionContext);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2378 次 |
| 最近记录: |