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


    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
  • 相关阅读:
    禅道技术官网
    mysql中获取一天、一周、一月时间数据的各种sql语句写法
    使用HttpFileServer自建下载服务器
    axure新手入门教程
    Mysql存储过程查询结果赋值到变量的方法
    mysql 数据表中查找、删除重复记录
    oracle中的sql%rowcount,sql%found、sql%notfound、sql%rowcount和sql%isopen
    存储过程中的when others then 和 raise
    Oracle的DBMS_OUTPUT.PUT_LINE用法及脚本批处理方法
    oracle 特殊符号
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3231481.html
Copyright © 2020-2023  润新知