站点的结构图如上图。请教一下如何在Web.config设置这些验证。
1、只有管理员才可用访问Admin文件夹的所有文件。role==admin
2、User.aspx必须登陆才可用访问。role=member
3、其他页面没有登陆都可用访问。
在web.config应该如何配置?
我在Admin文件夹建立的web.config是这样设置的。好像不行
<configuration>
<location path="Admin">
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Admin/Login.aspx" path="~/Admin/" protection="All" name="AdminForms" timeout="30" defaultUrl="~/Admin/Default.aspx" />
</authentication>
<authorization>
<deny users="?" />
<!--<allow users="*" />-->
</authorization>
</system.web>
</location>
</configuration>
还有跟目录的web.config如何配置?
你要把这段直接放在根目录的web.config下
<location path="Admin">
<authorization>
<allow roles="admin"/>
</authorization>
</location>
<location path="User.aspx"
<authorization>
<deny users="?"/>
<allow roles="member"/>
</authorization>
</location>
如果还不行
检查下globals.cs中的对role的操作是不是写在这个事件中Application_PostAuthenticateRequest
同意一楼的
<forms loginUrl="~/Admin/Login.aspx" path="~/Admin/" protection="All" name="AdminForms" timeout="30" defaultUrl="~/Admin/Default.aspx" />
这句也有问题吧,你的意思是当不是管理员身份的时候跳转到loginUrl="~/Admin/Login.aspx"这个页面,作为一个没有经过Windows验证的普通客户端用户来说,是永远也不可能登录的啊,所以永远也不可能跳转到 loginUrl="~/Admin/Login.aspx"这个页面,正确的做法应该是把这个login.aspx页面放到admin文件夹外面。
这是我的个人理解,不知道是否正确,供参考
一楼的完全正确!