Dav*_*Lay 5 validation asp.net-mvc authorization
我有一个显示项目列表的视图.用户可以编辑,删除或创建新项目,但根据他们的授权,他们可能会或可能不会被允许执行某些操作.
我要求只显示当前用户可以执行的操作,但我不希望使用授权来混淆视图if-else's
鄙视是一个非常普遍的要求,我找不到一个真正令人满意的方法.
到目前为止,我最好的方法是为Html.ActionLink需要权限的扩展方法提供重载,但是会有更复杂的场景,比如隐藏整个html块或切换标签的文本框+隐藏.
有一个更好的方法吗?
我能想到的一个例子是调用 Html.RenderAction (链接: http: //msdn.microsoft.com/en-us/library/ee703490.aspx),然后传递您希望用作路由值的链接到操作方法(它将显示为操作的参数)。因为它是 RenderAction,所以您可以返回控制器进程,因此您可以让它根据用户的状态呈现您想要的任何视图或数据。
例子:
<% Html.RenderAction("Permissions" /* Controller */, "PermissionLink", new { Url = "Admin.aspx" }); %>
Run Code Online (Sandbox Code Playgroud)
你的控制器会有类似的东西:
public ActionResult PermissionsLink (string url)
{
// Do Whatever kind of Authentication you want here, Session is available, etc
if(authenticated)
return View("Link");
else
return View("Blank");
}
Run Code Online (Sandbox Code Playgroud)