我在web.config中写
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" timeout="120">
<!-- protection="[All|None|Encryption|Validation]" -->
</forms>
</authentication>
结果运行时在客户端访问时会弹出对话框要求输入用户名和密码,我在IIS中把该WEB站点改为允许匿名访问也不行,为什么啊,怎么改啊?
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" timeout="120">
<!-- protection="[All|None|Encryption|Validation]" -->
</forms>
</authentication>
结果运行时在客户端访问时会弹出对话框要求输入用户名和密码,我在IIS中把该WEB站点改为允许匿名访问也不行,为什么啊,怎么改啊?
此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
(未经身份验证的)用户。
--> <authorization>
<allow users="*" /> <!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization>
<!--<deny users="?"/>-->
<allow users="*" /> --><!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization>
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="checkQX" loginUrl="admin/login.aspx" protection ="All" timeout="20"></forms>
</authentication>
</system.web> <location path="admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>
admin目录下的页面只有登陆了才可以看,否则跳转。
楼主的需求事实上就是让iis不要控制而由程序来控制,可以这样实现:
在IIS中项目上点右键-所有任务-权限向导中选public website,然后在属性的目录安全性中允许匿名访问并让IIS控制密码(如不想弹出操作系统的那个输入密码对话框可不使用集成windows登录);
在程序webconfig中设定deny users="?"/,这样未授权用户访问访问时会自动导向到login页面,登录后返回到刚才要求的页面。