限制对某些.aspx页面的访问

本文关键字:访问 aspx | 更新日期: 2023-09-27 17:56:01

我的 asp.net Web应用程序中有一些只有管理员才能看到的.aspx页面,还有一些所有用户都可以看到的.aspx页面。如何限制普通用户访问供管理员使用的页面?

此外,我没有实现 asp.net 的授权,我的意思是我正在使用会话和标志变量自己实现身份验证。在这种情况下,如何将内容限制为依赖于权限的用户?

限制对某些.aspx页面的访问

将这些页面放在自己的目录中,并在此目录中使用web.config来限制对它们的访问。

<configuration>
   <system.web>
      <authorization>
         <allow roles="Admins"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</configuration>

不要重新发明轮子!

我可能会创建一个自定义函数,当然是公共方法,其中包含基于角色的所有逻辑[正如您提到的,您不想使用 asp.net 的成员资格功能]以允许拒绝用户访问页面。此方法将检查用户对该页面的资格,为了获得更好的逻辑,您可以保留 Web 中所有页面的密钥。配置。

您可以在 中创建密钥

   <appsetting>

 <add key="Page1" value="ViewOrders.aspx"/>
<add key="Page2" value="DeleteOrders.aspx"/>

现在,您可以在方法中创建 for/foreach 循环来迭代页面名称的键值。我之所以这样说,是因为您以后添加页面并相应地为它们分配角色会更容易。

编辑

也许,你想看到这个 http://mywsat.codeplex.com/

如果您使用的是自己的角色提供程序,则可能需要创建自定义角色提供程序,并让它从会话中为用户返回角色,然后可能能够弥合这两个差距...

呵。

知道这有点旧,但以防万一其他人正在使用会员资格。 在你的 web.config 中使用它:

<configuration>
  <!-- Only administrators may access AdminTools.aspx -->
  <location path="AdminTools.aspx">
    <system.web>
      <authorization>
        <allow roles="Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

参考:使用 C# VB 构建自己的 ASP.NET 2.0 网站,第二版克里斯蒂安·戴尔,扎克·鲁瓦尔卡巴