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了。

 
 
分类: asp.net
标签: IIS

IIS7中 ASP.NET授权功能如何实现对静态文件的控制的更多相关文章

  1. 修改IIS7中ASP的上传文件大小限制

    最近在处理一个ASP的项目,用的全新的Windows Server 2008服务器. 今天客户反映图片文件上传不上去,设置服务器端文件夹权限之后文件可以上传了. 但是不久客户就反映有几个文件传不上去, ...

  2. Asp .Net core 2 学习笔记(3) —— 静态文件

    这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...

  3. asp.net core 教程(七)-异常处理、静态文件

    Asp.Net Core-异常处理 Asp.Net Core-异常处理 在这一章,我们将讨论异常和错误处理.当 ASP.NET Core应用程序中发生错误时,您可以以各种不同的方式来处理.让我们来看看 ...

  4. ASP.NET Core 2.1 : 十四.静态文件与访问授权、防盗链

    我的网站的图片不想被公开浏览.下载.盗链怎么办?本文主要通过解读一下ASP.NET Core对于静态文件的处理方式的相关源码,来看一下为什么是wwwroot文件夹,如何修改或新增一个静态文件夹,为什么 ...

  5. ASP.NET Core 1.0基础之静态文件处理

    来源 这些HTML , CSS files, image files, 和JavaScript这些静态文件,是ASP.NET能够直接响应给客户端的.本文详述下ASP.NET和静态文件的关系. Serv ...

  6. MVC项目中,如何访问Views目录下的静态文件!

    <!--注意,是system.webServer节点,而非system.web--><system.webServer> <handlers> <add na ...

  7. express中的中间件(middleware)、自定义中间件、静态文件中间件、路由中间件

    express文档地址 什么是中间件呢(middleware)?它是谁的中间件呢? 首先我们需要了解到请求和响应, 请求就是客户端发送请求给服务器, 响应就是,服务器根据客户端的请求返回给客户端的数据 ...

  8. 在IIS7中ASP.NET MVC3网站中建立gcc编译服务时要注意的问题

    1. 正常配置下调用gcc总是失败,虽然在环境变量中配置了gcc路径,但提示找不到gcc编译程序: 2. 使用全路径调用gcc,也是失败,提示cc1.exe编译失败,失败代码53: 3. 通过远程桌面 ...

  9. asp IIS网站的配置(Win7下启用IIS7配置ASP运行环境)

    其实win7下的IIS7配置过程是非常简单的.下面让seo博客来详细的介绍一下win7下配置IIS7环境运行ASP网站的方法,以供初接触者参考   第一次在windows7下配置IIS,虽然有丰富的x ...

随机推荐

  1. c# p2p 穿透(源码加密)

    http://blog.oraycn.com/ESFramework_Demo_P2P.aspx 测试,完全OK!  我很喜欢这个.可以源码是加密的!我希望实现 web 版本的p2p视频观看,aehy ...

  2. java中HashSet详解

    HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSe ...

  3. git上自然框架源码

    [自然框架]终于把源码弄到git上吗了 2015-02-02 14:38 by 金色海洋(jyk)阳光男孩, 183 阅读, 6 评论, 收藏, 编辑 好久没写博客了,发现又从左面的排名里掉出去了. ...

  4. 萧墙HTML5手机发展之路(51)——jquerymobile在提高页面访问速度

    正在使用jQuery Mobile开发时间可以选择单页模板和多页模板,在单页模板时从一个页面跳转到另一个页面时从需要server要求.用户会感到轻微的停顿. 使用多页模板,为了改善网页之间跳跃的流畅, ...

  5. APACHE启动失败是SYSTEM对apache目录没权限导致

    表现如下: Apache: 1.The Apache service named reported the following error:>>> (OS 5)拒绝访问. : htt ...

  6. SALT 加密

    大家都知道,MD5加密是不可逆.但事实上,我们通常值的MD5算法.黑客的眼下破解率相对较高.也有非常多站点上干脆就提供批量解密MD5的服务,当然是收费的.http://www.xmd5.org.这里提 ...

  7. Objective-C和Swift

    在项目中同时使用Objective-C和Swift 苹果发布的Swift语言可以和之前的Objective-C语言同时存在于一个项目中. 可能有人会认为是同一个类文件中既可以有Objective-C也 ...

  8. Linux下查看MySQL的安装路径

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  9. 【转】Android的Merge讲解与实例

    原文:http://blog.sina.com.cn/s/blog_62f987620100sf13.html 单独将<merge />标签做个介绍,是因为它在优化UI结构时起到很重要的作 ...

  10. 你是否应该使用一个Javascript MVC框架?

    你是否应该使用一个Javascript MVC框架?本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,希望对大家有帮 ...