限制对某些.aspx页面的访问
本文关键字:访问 aspx | 更新日期: 2023-09-27 17:56:01
我的 asp.net Web应用程序中有一些只有管理员才能看到的.aspx页面,还有一些所有用户都可以看到的.aspx页面。如何限制普通用户访问供管理员使用的页面?
此外,我没有实现 asp.net 的授权,我的意思是我正在使用会话和标志变量自己实现身份验证。在这种情况下,如何将内容限制为依赖于权限的用户?
将这些页面放在自己的目录中,并在此目录中使用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 网站,第二版克里斯蒂安·戴尔,扎克·鲁瓦尔卡巴