IIS 7.5 和 ASP.Net 中的身份验证设置有什么区别?
我刚刚开始使用 Windows 2008 R2 中的 IIS 7.5 和 ASP.Net 4 学习 Web 编程。
我注意到 IIS 和 ASP.Net 都可以定义身份验证规则。在 IIS 中,有一个表单身份验证设置,我可以将用户重定向到指定页面进行身份验证,如下所示:
和然后,在 ASP web.config 文件中,我找到类似的设置:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
当我完成这两项设置时,我假设任何页面请求都将重定向到 login.aspx 页面。但事实并非如此。所以我很困惑。两组配置如何协同工作?为什么页面请求没有重定向?
谢谢
更新
终于我让它工作了,我想我现在明白了。我的网站结构如下:
这是关于修改授权规则的。拒绝所有未经授权的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>
I just start to learn web programming using IIS 7.5 in windows 2008 R2, and ASP.Net 4.
I notice that both IIS and ASP.Net can define Authentication rules. In IIS, there is a form authentication setting where I can redirect user to specified page for authentication, like below:
And then, in ASP web.config file, I find similar settings:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
When I finish both settings, I assume any page request will be redirect to the login.aspx page. But it didn't. So I am confused. How do the 2 sets of configs work together? And why page request is not redirected?
Thanks
Update
Finally I get it working and I think I understand it now. My website structure is like below:
It is about modifying Autherization rules. Deny all unauthorized users for root:
<authorization>
<deny users="?" />
</authorization>
CSS files should be allowed for all users, so I have Styles\web.config:
<authorization>
<allow users="*" />
</authorization>
and only allow unauthorized users to access register.aspx, so I have Account\web.config:
<location path="Register.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您还需要配置另一个组件:授权。如果不这样做,未经授权的用户可以访问所有页面,并且不会被重定向到登录页面。例如:
这指定拒绝所有未经身份验证的用户访问应用程序中的页面。
authorization
元素是system.web
配置部分的一部分。There's another component you need to configure: authorization. If you don't, unauthorized users have access to all pages and will not be redirected to the login page. For example:
This specifies that all unauthenticated users are denied access to pages in your application. The
authorization
element is part of thesystem.web
configuration section.当您在 IIS 中设置带有身份验证的内容时(在您的情况下是表单身份验证)。它还使用相同的设置更改映射的项目 webconfig 文件。这就是为什么您在两个模块中看到相同的信息。
When you set something in IIS with authentication ( in your case form authentication). It also change your mapped project webconfig file with the same settings. That's why you see same information in both modules.