Securtiy在ASP.NET中导航

时间:2010-06-22 11:24:53

标签: asp.net security

我已获得特定用户的特别许可。 只有该菜单才会启用为该用户设置的权限。

我有两个问题......

1)菜单项应该是不可见的而不是禁用

2)如果任何用户复制了无权访问的页面名称,可以将其打开..

建议......(紧急)

4 个答案:

答案 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会员资格)