ASP.NET中导航时的安全性

ASP.NET中导航时的安全性,asp.net,security,Asp.net,Security,我已为特定用户授予了特定权限。 仅启用为该用户设置权限的菜单 我有两个问题 1) 菜单项应不可见,而不是禁用 2) 如果任何用户复制其无权访问的页面名称并可以打开该页面 建议任何…(紧急)您可以将其添加到页面加载中 if (!HttpContext.Current.User.IsInRole("YourRole")) { Response.Redirect("~/AccessDenied.aspx"); } 您应该查看web.config

我已为特定用户授予了特定权限。 仅启用为该用户设置权限的菜单

我有两个问题

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

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


建议任何…(紧急)

您可以将其添加到页面加载中

if (!HttpContext.Current.User.IsInRole("YourRole"))
        {
            Response.Redirect("~/AccessDenied.aspx");
        }

您应该查看web.config的
部分中的
元素。在那里,您可以设置访问规则,如下所示

<authorization>
    <allow roles="Admin" /> <!--allows access to admins-->
    <deny users="*" /> <!-- denies access to any other users -->
</authorization>

您可以通过使用来管理菜单安全性,但如果您想阻止用户通过url访问页面,可以将其放在web.config文件中,如:

<location path="securedAdministrationPage.aspx">
  <system.web>
    <authorization>
      <deny users="*" />
      <allow users="*" roles="Admins"/>
    </authorization>
  </system.web>
</location>


我建议将导航置于用户控件中,然后使用开关语句或类似语句,以及网络配置中的位置部分


然后,在switch语句中,您可以使用“Visible”属性对无权查看某些页面的用户隐藏导航链接(确保它们具有runat=“server”),具体取决于他们的角色(如果使用asp.net成员身份)

您使用的是哪种身份验证?形式?窗户?Asp.net成员角色?与穆罕默德的答案类似的东西是正确的,但您确实需要为菜单提供Asp.net标记,以便我们确定为哪些内容提供解决方案。这将拒绝用户访问页面,但不会提供菜单控件的权限。从最初的问题来看,他似乎试图根据用户的登录权限隐藏菜单的一个分支。@Brian,事实上,如果他使用
控件并在
web.sitemap
文件中定义菜单,这些规则将适用。感谢您的回复,但我使用自己的身份验证很简单,就像使用存储在数据库中的用户名和密码一样。此外,对于授予权限,在创建用户时,我通过选中用户在加载用户时可以访问的复选框来授予链接的权限。同样,我也在检查授予该用户的权限。我只想动态设置用户权限&加载用户权限(用户可以访问)。如果您有其他解决方案,请建议。。。Thanks@diptikantsahu,在这种情况下,您可能只需要在Page_Load方法中使用if子句(很像Muhammad Akhtar建议的那样),该子句检查用户是否具有权限,如果没有权限,则重定向到主页或其他内容。不过,我强烈建议您实现自己的会员资格提供商,以利用.NET内置的所有功能。感谢您的回复,但我只需使用存储在数据库中的用户名和密码进行身份验证。此外,对于授予权限,在创建用户时,我通过选中用户在加载用户时可以访问的复选框来授予链接的权限。同样,我也在检查授予该用户的权限。我只想动态设置用户权限&加载用户权限(用户可以访问)。如果您有其他解决方案,请建议。。。感谢您的回复,但我很简单,使用我自己的身份验证,就像使用存储在数据库中的用户名和密码一样。此外,对于授予权限,在创建用户时,我通过选中用户在加载用户时可以访问的复选框来授予链接的权限。同样,我也在检查授予该用户的权限。我只想动态设置用户权限&加载用户权限(用户可以访问)。如果您有其他解决方案,请建议。。。谢谢