打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IIS7中 ASP.NET授权功能如何实现对静态文件的控制

前序

     .net提供了3种用户认证的方式,分别是Windows,Forms,Passport。这几种形式的定义可以在网站根目录下Web.config中的authentication节点中看见。我们常用的是forms形式。forms验证就是表单认证,提供了以身份id和密码的形式进行验证和授权管理的功能。

它运行的一个流程:

 

 

配置web.config

     配置方法如下,没有验证的用户根据配置自动跳转到loginUrl里面的页面去登陆。

		<authentication mode="Forms">			<forms loginUrl="~/Login.aspx" defaultUrl="~/Default.aspx"/>		</authentication>

配置授权设置

     同样是在web.config中的<system.web>下增加如下节点,“?”的意思指匿名用户,而“*”则表示所有用户。下面这个意思就是说根目录下的所有页面拒绝被匿名用户访问。当然你也可以在users中填写指定的用户ID,不过那样并不常用。还有deny,allow的顺序是先写allow完了再deny,不然就会出现问题。这个大家要记住。

		<authorization>			<deny users="?"/>		</authorization>

关键点

      现在问题是当我们要控制访问的文件是静态文件,比如图片、html页面时,在Visual Studio自带的Devolopment Server使用一点问题也没有。但是在发布到IIS上时就会出现问题。web.config中配制的授权对静态内容不起作用,明明这个test.html页面被限制匿名访问了,但还是能不登录就看到。分析其原因是因为这些静态内容IIS根本就没有转交给aspnet_isapi进行处理,所以配置的授权对它们根本不起作用。

解决办法

      IIS7有两种运行模式:经典模式和集成模式。两种模式下的设置是不一样的。

      1、先来看集成模式:此模式下需修改两个模块(UrlAuthorization、FormsAuthentication)的默认配制,取消选择“仅针对向ASP.NET应用程序或托管处理程序发出的请求调用  ”

 

      记住UrlAuthorization、FormsAuthentication这两个模块都要改,刚开始我只改了UrlAuthorization,结果匿名用户倒是访问不了了,但是页面没有自动转到登录页面,显示如下错误:

 

       2、再来看经典模式下,此时类似于IIS6,只要添加上通配符脚本映射就行了。

 

总结

      其实原理很简单,都只是要让IIS把静成内容都转交给asp.net处理就OK了。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用 IIS 进行ASP.NET 成员/角色管理(1):安全和配置概述
在Win 2003中配置ASP.net环境
ASP.NET必须知道的:HttpModule,HttpHandler-程序开发-红黑联盟
ASP.NET页面剖析(1)
asp.net的10个提升性能或扩展性的秘密(一)
ASP.NET安全问题--ASP.NET生命周期中的验证以及身份验证模块 - ASP.NE...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服