因此,这可能听起来是一个愚蠢的问题,但是如何显示仅用于管理员用户的链接?隐藏ASP.NET MVC5中某些角色的链接
假设一个普通的用户会看到以下链接:
首页/ /联系
而且管理员用户将看到以下链接:
首页/ /联系我们/联系
我试图限制在控制器并链接菜单上的控制器。但它仍然显示每个人的链接,只是不允许访问任何人,但管理员
可以重载视图吗?
因此,这可能听起来是一个愚蠢的问题,但是如何显示仅用于管理员用户的链接?隐藏ASP.NET MVC5中某些角色的链接
假设一个普通的用户会看到以下链接:
首页/ /联系
而且管理员用户将看到以下链接:
首页/ /联系我们/联系
我试图限制在控制器并链接菜单上的控制器。但它仍然显示每个人的链接,只是不允许访问任何人,但管理员
可以重载视图吗?
根据您使用的是哪种会员资格/用户提供程序,您应该能够直接从视图中检查用户是否已登录并以特定角色登录。
所以你最终会得到类似的东西;
@Html.ActionLink("Index", "Home")
@Html.ActionLink("About", "Home")
@Html.ActionLink("Contact", "Home")
@if (User.Identity.IsAuthenticated){
if (User.IsInRole("Admin")){
@Html.ActionLink("Admin", "AdminController")
}
}
要记住,[Authorize]
属性添加到您的Admin
操作方法:
[Authorize(Roles="Admin")]
public ActionResult Admin()
{
// ...
return View();
}
最好的做法(或者可能是为了澄清)来检查用户是否被认证**和**如果他们在某个角色中?我认为,除非他们告诉网站他们是谁,否则他们不会扮演任何角色,这意味着事先进行身份验证。请注意,我**不会质疑**的选择,但**只是想知道**。我的安全技能就像企鹅在飞行中 - 看到其他人在做,从未做过。 (不同的是,我使用假期来雄心勃勃地改变这种状态,不像懒企鹅hihi。) –
'Authorize'属性会检查用户是否被默认认证,然后你可以选择添加角色。 –
哦,我意识到那不清楚(显然,读心者不是你强烈的一面,嘿嘿)。我指的是** first **样本(CSHTML文件,Razor标记)中的第4行和第5行。 –
这不只是隐藏,你必须评估用户的角色登录......有这么多的答案,这种问题 –