隐藏ASP.NET MVC5中某些角色的链接

use*_*812 13 asp.net authorization asp.net-mvc-5

所以这听起来可能是一个愚蠢的问题,但我如何只为管理员用户显示链接?

假设普通用户看到以下链接:
主页/关于/联系

管理员用户可以看到以下链接:
主页/关于/联系人/管理员

我尝试在控制器中进行限制并在菜单上链接控制器.但它仍然显示每个人的链接,只是不允许访问任何人,但管理员

视图可以重载吗?

Tim*_*mes 33

根据您使用的会员/用户提供商的类型,您应该能够直接从View查看用户是否已登录并具有特定角色.

所以你最终会得到像这样的东西;

@Html.ActionLink("Index", "Home") 
@Html.ActionLink("About", "Home") 
@Html.ActionLink("Contact", "Home") 
@if ( User.Identity.IsAuthenticated ){
    if ( User.IsInRole("Admin") ){
        @Html.ActionLink("Admin", "AdminController")        
    }
}
Run Code Online (Sandbox Code Playgroud)

并记得在[Authorize]您的Admin操作方法中添加属性:

[Authorize(Roles="Admin")]
public ActionResult Admin()
{
    // ...
    return View();
}
Run Code Online (Sandbox Code Playgroud)

  • 检查用户是否已通过身份验证 ** 和 ** 是否属于某个角色的最佳实践(或者可能是为了清楚起见)?我认为,除非他们告诉网站他们是谁,否则他们不会扮演任何角色,这意味着事先进行身份验证。请注意,我 ** 不是在质疑 ** 选择,而是 ** 只是想知道 **。我的安全技能就像飞行中的企鹅 - 看到别人这样做,我自己从未这样做过。(不同的是,与懒惰的企鹅不同,我正在利用假期雄心勃勃地改变这种状态,嗨。) (2认同)