Asp.net mvc 在.NETMVC中包装对功能的访问的方法?
在.NET MVC应用程序中包装对功能的访问有哪些不同的解决方案 例如,我有六个选项卡代表应用程序的不同区域,在区域1中,可以添加、编辑、上载等等 我需要一个中心的方式来表达:Asp.net mvc 在.NETMVC中包装对功能的访问的方法?,asp.net-mvc,security,privileges,Asp.net Mvc,Security,Privileges,在.NET MVC应用程序中包装对功能的访问有哪些不同的解决方案 例如,我有六个选项卡代表应用程序的不同区域,在区域1中,可以添加、编辑、上载等等 我需要一个中心的方式来表达: 建立一些用户可以做什么的字典 包装选项卡、按钮、链接等,验证用户是否可以访问此功能并适当显示/隐藏 我知道我可以通过动作过滤器和角色来限制对动作的访问,但是从UI上呢 任何帮助都将不胜感激。我相信我不是唯一一个需要这样做的人,谢谢 首先,您还需要执行服务器端授权。任何人都可以冒充您的客户机并直接呼叫您的控制器,绕过您的客
任何帮助都将不胜感激。我相信我不是唯一一个需要这样做的人,谢谢 首先,您还需要执行服务器端授权。任何人都可以冒充您的客户机并直接呼叫您的控制器,绕过您的客户端授权 但我要做的是: 创建AuthorizationService以集中存储此业务逻辑。它将有如下方法:
public bool CanEditSomeObject(Guid userId, Guid objectId)
在控制器内使用此AuthorizationService(或控制器引用的其他服务)构造ViewModel,其中包含view需要的所有授权信息
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(Guid id)
{
bool currentUser = _userService.GetUser(User.Identity.Name);
bool canEditSomeObject = _authenticationService.CanEditSomeObject(currentUser.Id, id);
var viewModel = new SomeObjectViewModel {CanEditSomeObject = canEditSomeObject};
return View(viewModel);
}
使视图强类型化,并基于模型修改HTML。您可以使用局部视图之类的方法使其更干净。但是,对于当前用户无权访问的内容,您只需隐藏、禁用或不包含HTML
<%= if (Model.UserCanEdit) Html.RenderPartial("EditForm.ascx") %>
此外,如果您需要在客户端动态更改内容(例如,用户执行操作a,因此现在他们可以执行操作b),那么您可以使用JQuery操作HTML。如果愿意,您甚至可以使用JQuery呼叫控制器询问问题(参见此),但我不确定这是否必要。Nice!谢谢你的建议,我会试试的。