【发布时间】:2014-12-28 12:35:22
【问题描述】:
我希望仅当用户被授权执行给定操作时才显示操作链接。有没有一种好方法可以在 cshtml 中做到这一点而无需重复授权。没有检查我已经在属性中设置的相同权限。
谢谢
【问题讨论】:
标签: c# razor model-view-controller authorization
我希望仅当用户被授权执行给定操作时才显示操作链接。有没有一种好方法可以在 cshtml 中做到这一点而无需重复授权。没有检查我已经在属性中设置的相同权限。
谢谢
【问题讨论】:
标签: c# razor model-view-controller authorization
您可以将链接存储在数据库中。 并根据用户分配权限。 on view 根据权限建立链接。
【讨论】:
[HttpPost]
[InitializeSimpleMembership]
[Authorize(Roles = "YourRole")]
public ActionResult Create(Product p)
{
...
}
@if (User.IsInRole("YourRole"))
{
@Html.ActionLink("Create Product", "Create")
}
【讨论】:
IsInRole 抛出异常,它有点过时了。
我过去曾使用此辅助函数仅在满足以下条件时才返回输出:
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
return evaluation ? value : MvcHtmlString.Empty;
}
所以你可以使用这个:
@Html.ActionLink("Create New", "Create").If(User.IsInRole("Your Role"))
清晰易读
【讨论】: