Dis*_*ile 11 c# asp.net-mvc razor
在我的MVC应用程序中,我有几个不同的角色:管理员,普通用户等等.
我知道我可以通过Authorize属性将安全性应用于我的控制器:
[Authorize(Roles="Admin")]
public ActionResult Create()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
但我还需要对视图应用一些安全性,以便不将View的某些部分显示给某些角色:
@if( User.IsInRole("Admin") )
{
@Html.ActionLink("Create", "Create")
}
Run Code Online (Sandbox Code Playgroud)
以上述方式执行此操作是否更好,或者在ViewModel中处理此类安全性:
public ActionResult Index()
{
var model = new IndexViewModel();
model.CanCreate = User.IsInRole("Admin");
return View(model);
}
View:
@( Model.CanCreate )
{
@Html.ActionLink("Create", "Create")
}
Run Code Online (Sandbox Code Playgroud)
第二种方法与第一种方法相比是否有任何好处,还是只是偏好?
第二种方式更受欢迎,因为您的业务逻辑将保持在模型级别.
在您的示例中,业务逻辑非常简单.但是,想象一下需求已经发生变化,现在不仅管理员可以创建内容,而且还可以创建超过1个月前注册的普通用户.有了业务逻辑,您必须更新所有视图.
| 归档时间: |
|
| 查看次数: |
2592 次 |
| 最近记录: |