IIS7中 ASP.NET授权功能如何实现对静态文件的控制
2013-08-01 19:25
661 查看
前序
.net提供了3种用户认证的方式,分别是Windows,Forms,Passport。这几种形式的定义可以在网站根目录下Web.config中的authentication节点中看见。我们常用的是forms形式。forms验证就是表单认证,提供了以身份id和密码的形式进行验证和授权管理的功能。
它运行的一个流程:
配置web.config
配置方法如下,没有验证的用户根据配置自动跳转到loginUrl里面的页面去登陆。
同样是在web.config中的<system.web>下增加如下节点,“?”的意思指匿名用户,而“*”则表示所有用户。下面这个意思就是说根目录下的所有页面拒绝被匿名用户访问。当然你也可以在users中填写指定的用户ID,不过那样并不常用。还有deny,allow的顺序是先写allow完了再deny,不然就会出现问题。这个大家要记住。
现在问题是当我们要控制访问的文件是静态文件,比如图片、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了。
.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了。
相关文章推荐
- IIS7中 ASP.NET授权功能如何实现对静态文件的控制
- IIS6中ASP.NET实现对静态文件的授权控制
- 如何实现asp.net中FileUpload文件类型过滤功能
- ASP.NET 如何实现伪静态 url重写路由功能
- 如何实现asp.net中FileUpload文件类型过滤功能
- 如何实现asp.net中FileUpload文件类型过滤功能 .
- asp.net core实现文件上传功能
- 如何在asp.net中用jQuery实现便捷的提示功能和表单验证功能
- ASP .net 实现文件上传 下载功能
- 在ASP.NET 2.0 下如何实现DataList的编辑功能
- 如何在asp.net中实现返回上一页的功能
- 在ASP.NET网站中实现带列表(其由xml文件控制生成)的视频播放
- asp.net core mvc实现伪静态功能
- Asp.Net下的文件上传功能实现
- asp.net中实现文件下载功能
- asp.net core mvc实现伪静态功能
- 在ASP.net中是如何实现注销功能的?
- ASP.NET MVC 中如何实现基于角色的权限控制
- asp.net core mvc实现伪静态功能
- asp.net mvc如何实现文件下载