我已获得特定用户的特别许可。 只有该菜单才会启用为该用户设置的权限。
我有两个问题......
1)菜单项应该是不可见的而不是禁用
2)如果任何用户复制了无权访问的页面名称,可以将其打开..
建议......(紧急)
答案 0 :(得分:1)
您可以在页面加载中添加
if (!HttpContext.Current.User.IsInRole("YourRole"))
{
Response.Redirect("~/AccessDenied.aspx");
}
答案 1 :(得分:0)
您应该查看web.config的<location>
部分中的<system.web>
元素。在那里,您可以设置访问规则,就像
<authorization>
<allow roles="Admin" /> <!--allows access to admins-->
<deny users="*" /> <!-- denies access to any other users -->
</authorization>
更多信息here
答案 2 :(得分:0)
您可以使用ASP.NET Site-Map Security Trimming来管理菜单安全性,但如果您想阻止用户通过网址访问该网页,您可以使用它将其放入您的web.config文件中,如:
<location path="securedAdministrationPage.aspx">
<system.web>
<authorization>
<deny users="*" />
<allow users="*" roles="Admins"/>
</authorization>
</system.web>
</location>
此链接可以帮助您http://wiki.asp.net/page.aspx/653/aspnet-webconfig--location-and-authroization-tags/
答案 3 :(得分:0)
我建议您将导航放入用户控件,然后使用switch语句等,以及webconfig中的location部分。
在switch语句中,您可以使用'Visible'属性隐藏导航链接(确保他们有runat =“server”)来自无权查看某些页面的用户,具体取决于他们的角色(如果使用asp.net会员资格)