asp.net-mvc – ASP.net MVC – 为一个用户/角色授权控制器,但为一个操作授权所有用户
发布时间:2020-05-28 15:27:53 所属栏目:asp.Net 来源:互联网
导读:我有一个像这样的控制器: [Authorize(Users=Admin)]public class MyController : Controller{ ... [AllowAnonymous] public AllUsersAction() { }} 除了我确实想要授权AllUsersAction之外,只有所有授权用户都应该能够点击它,而不仅
|
我有一个像这样的控制器: [Authorize(Users="Admin")]
public class MyController : Controller
{
...
[AllowAnonymous]
public AllUsersAction()
{
}
}
除了我确实想要授权AllUsersAction之外,只有所有授权用户都应该能够点击它,而不仅仅是管理员. 该怎么办? 编辑:我知道我可以授权整个控制器,并为管理员只能使用的所有操作提供更多限制.但我宁愿不把属性放在每一个动作上,而是一个. 这个问题可以更好地表达:如果目前不可能实现这种“极简主义”,那么实施会是什么样的? 解决方法使用Authorize属性,不带控制器的任何参数:[Authorize]
public class MyController : Controller
{
...
public AllUsersAction()
{
}
[Authorize(Users="Admin")]
public ActionResult OnlyForAdmin()
{
}
}
并为受限操作指定“授权”属性“角色/用户”属性. 遗憾的是,只有当action具有AllowAnonymous属性时,控制器上的Authorize属性才会绕过授权.幸运的是,如果action有自己的Authorize属性,你可以覆盖Authorize属性的OnAuthorization方法以跳过控制器中的授权检查Authorize属性: public class CustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if(filterContext.ActionDescriptor.IsDefined(typeof(AuthorizeAttribute),true))
{
//skip authorization check if action has Authorize attribute
return;
}
base.OnAuthorization(filterContext);
}
}
您可以在示例中使用此CustomAuthorize: [CustomAuthorize(Users="Admin")]
public class MyController : Controller
{
...
[Authorize]
public AllUsersAction()
{
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC单元测试 – 会话
- asp.net – 什么是动词=“*”?
- asp.net – 如何在网格视图列标题上添加鼠标悬停工具提示
- asp.net-mvc-3 – 在MVC3中使用自定义的IPrincipal和IIdent
- asp.net-mvc – 如何进入MVC4源代码,而无需构建程序集
- 在ASP.Net网站上实现自定义错误页面
- asp.net-web-api – 什么时候使用HttpMessageHandler vs Ac
- .net – SignalR长轮询在5秒内断开连接
- asp.net-mvc – ASP.NET MVC中的视图文件/目录结构应该是什
- asp.net-mvc – 在asp.net mvc中选择列表用法
推荐文章
站长推荐
- asp.net-mvc – ASP.Net MVC如何确定用户是否可以
- 如果验证失败,如何在ASP.NET MVC中阻止jquery aj
- ASP.net没有为某些用户代理生成javascript
- asp.net-mvc-2 – ASP.NET MVC2 ModelMetadataPr
- 将自定义属性添加到asp.NET RadioButton控件
- asp.net-mvc – 使用与本地化更改冲突的自定义数
- asp.net – 为什么HttpContext.Current.User.Ide
- asp.net-mvc – 为什么MVC控制器必须在其类名上具
- asp.net-mvc – ASP.net Web API和System.Net.Ht
- IIS会话超时与ASP.NET会话超时
热点阅读
