asp.net-mvc – ASP.NET MVC 3自定义授权
发布时间:2020-05-24 13:02:32 所属栏目:asp.Net 来源:互联网
导读:我正在编写一个ASP.NET MVC 3应用程序,我有很多角色: 系统管理员,客户管理员,预算所有者,应用所有者 我知道我可以使用[Authorize(Roles =“…”)]属性轻松限制对某些控制器(和操作方法)的访问. 但是,某些授权不仅仅基于角色,而是基于权限.例如,预算所有者应
|
我正在编写一个ASP.NET MVC 3应用程序,我有很多角色: 系统管理员,客户管理员,预算所有者,应用所有者 我知道我可以使用[Authorize(Roles =“…”)]属性轻松限制对某些控制器(和操作方法)的访问. 但是,某些授权不仅仅基于角色,而是基于权限.例如,预算所有者应该只能访问分配给其成本中心的预算 – 而不是其他人的预算. 目前我在action方法中有一些代码来检查: if(UserCapabilities.CanAccessBudget(budgetId))
{
// get budget and show view
}
else
{
// redirect to index action
}
这开始使我的代码变得混乱并使检查安全性变成一场噩梦 – 因为我有许多需要这些不同类型的授权检查的动作方法. 我有一个想法是编写一些自定义属性,我可以用它来装饰我的动作方法并清理我的代码: //
// GET: /Budgets/View/1
[CanAccessBudget]
public ActionResult View(int id)
{
//...
}
人们怎么想?编写自定义属性是最干净,最易维护的方式吗? 解决方法您可以编写自定义授权属性:public class CanAccessBudgetAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (isAuthorized)
{
var request = httpContext.Request;
var budgetId = request.RequestContext.RouteData.Values["budgetId"]
?? request["budgetId"];
var currentUser = httpContext.User.Identity.Name;
return HasPermissionsForBudget(currentUser,budgetId);
}
return isAuthorized;
}
}
然后: [CanAccessBudget]
public ActionResult View(int id)
{
//...
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何为客户端和服务器缓存设置不同的缓存到期时
- 一个ASP.NET应用程序(意外)在多个应用程序域或频繁的应用程
- asp.net-mvc – 如何最好地实现保存|保存并关闭|在ASP.NET
- asp.net – 为“忘记密码”执行代码的最佳方式
- asp.net – 线程被中止
- asp.net-core – 从appsettings.json获取ConnectionString,
- asp.net – 具有绝对URL的Asp .Net MVC RedirectToAction
- asp.net-mvc – 测试ASP.NET MVC网站
- asp.net – 我使用什么Active Directory字段来唯一标识用户
- asp.net-mvc – 以mvc形式发布数组
推荐文章
站长推荐
- asp.net – 设置Html.Hiddenfor的值
- .net – Control.ResolveUrl与Control.ResolveCl
- asp.net-mvc – ASP.NET MVC和LINQ一般问题
- asp.net-mvc – ASP.NET MVC – 如何获取一个URL
- 准备ASP.Net网站进行渗透测试
- asp.net-mvc – 如何将整数列表传递给MVC操作?
- asp.net – ASP MVC – 默认的HTTP标头有任何常量
- asp.net – 为什么在“Glimpse Web Debugger”中
- asp.net – 访问asp. VM外部的网络开发服务器
- asp.net-mvc – 用于Firefox的Windows认证网站提
热点阅读
