我刚刚开始在Windows 2008 R2和ASP.Net 4中使用IIS 7.5学习Web编程。
我注意到IIS和ASP.Net都可以定义身份验证规则。在IIS中,有一个表单身份验证设置,我可以将用户重定向到指定的页面进行身份验证,如下所示:
然后,在ASP web.config文件中,我找到了类似的设置:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
当我完成两个设置后,我认为任何页面请求都将重定向到login.aspx页面。但事实并非如此。所以我很困惑。 2套配置如何协同工作?为什么不重定向页面请求?
由于
更新
最后我开始工作了,我想我现在明白了。我的网站结构如下:
它是关于修改Autherization规则。拒绝所有未经授权的root用户:
<authorization>
<deny users="?" />
</authorization>
所有用户都应该允许CSS文件,所以我有Styles \ web.config:
<authorization>
<allow users="*" />
</authorization>
并且只允许未经授权的用户访问register.aspx,所以我有Account \ web.config:
<location path="Register.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
答案 0 :(得分:3)
您需要配置另一个组件:授权。如果不这样做,未经授权的用户可以访问所有页面,并且不会被重定向到登录页面。例如:
<authorization>
<deny users="?" />
</authorization>
这指定拒绝所有未经身份验证的用户访问您应用程序中的页面。 authorization
元素是system.web
配置部分的一部分。
答案 1 :(得分:1)
当您在IIS中使用身份验证设置某些内容时(在您的案例中进行身份验证)。它还使用相同的设置更改映射的项目webconfig文件。这就是为什么你在两个模块中看到相同的信息。