我的asp.net Web应用程序中有一些.aspx页面,只有管理员才能看到,所有用户都可以看到一些.aspx页面。如何限制正常用户访问用于管理员的页面?
更多关于我没有实现asp.net的授权,我的意思是说我正在使用会话和标志变量实现自己的身份验证。如何根据此方案中的权限将内容限制为用户?
答案 0 :(得分:8)
将这些页面放在他们自己的目录中,并使用此目录中的web.config
来限制对它们的访问。
<configuration>
<system.web>
<authorization>
<allow roles="Admins"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
不要重新发明轮子!
答案 1 :(得分:2)
我可能会创建一个自定义函数,当然是公共方法,其中包含基于角色的所有逻辑[正如您所提到的,您不希望使用asp.net的成员资格功能]以允许拒绝用户访问页面。此方法将检查用户是否符合页面的资格,为了更好的逻辑,您可以保留web.Config中所有页面的密钥。
您可以在
中创建密钥 <appsetting>
<add key="Page1" value="ViewOrders.aspx"/>
<add key="Page2" value="DeleteOrders.aspx"/>
现在,您可以在方法中创建for / foreach循环,以迭代页面名称的键值。我这样说是因为您以后更容易添加页面并相应地分配它们。
修改强>
也许,您希望看到此http://mywsat.codeplex.com/
答案 2 :(得分:1)
如果您使用自己的,可能需要创建自定义角色提供程序,并让它从会话中返回用户的角色,然后可以弥合这两个空白...
HTH。
答案 3 :(得分:0)
知道这有点旧,但以防其他人正在使用会员资格。在web.config中使用它:
<filesystem>
参考:使用C#VB构建您自己的ASP.NET 2.0网站,第二版 Christian Daire,Zak Ruvalcaba