.NET技术支持者

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::
笔者做一个报表展示的网站,报表使用excel形式存放在服务器,希望登录的人或者有权限的人才能下载excel报表。但是文件下载的路径无法隐藏,所以页面控制根本没用。近日在研究iis的时候,突然就豁然开朗了。

首先编辑或者修改网站的web.config,加入或者修改红色区域

<!--  身份验证 
          此节设置应用程序的身份验证策略。可能的模式是 "Windows"、 

          "Forms"、 "Passport" 和 "None"

          "None" 不执行身份验证。 

          "Windows" IIS 根据应用程序的设置执行身份验证 

            (基本、简要或集成 Windows)。在 IIS 中必须禁用匿名访问。

          "Forms" 您为用户提供一个输入凭据的自定义窗体(Web 页),然后 

           在您的应用程序中验证他们的身份。用户凭据标记存储在 Cookie 中。

          "Passport" 身份验证是通过 Microsoft 的集中身份验证服务执行的,

           它为成员站点提供单独登录和核心配置文件服务。

    
-->

        
<authentication mode="Forms"> 

    
<forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="60" path="/"><credentials passwordFormat="SHA1" /></forms>

    
</authentication> 

       
<!--  授权 

           此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问

          应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名

          (未经身份验证的)用户。

    
-->

    
<authorization>

        
<deny users="?"/>

            
<!--  <allow     users="[逗号分隔的用户列表]"

                             roles="[逗号分隔的角色列表]"/>

                  <deny      users="[逗号分隔的用户列表]"

                             roles="[逗号分隔的角色列表]"/>

            
-->

</authorization>

接着编写login.aspx

对于登录成功者加入

FormsAuthentication.SetAuthCookie(uid,false);

     FormsAuthentication.RedirectFromLoginPage(uid,false);


打开iis,找到你的网站,点右键,选属性,-》主目录-》配置
然后在“映射”中选添加,扩展名 XLS

好了,大功告成,现在再访问主站下的一个xls文档如http://localhost/sms/1.xls,看到什么?

呵呵,没错,需要您登录了。当你输入登录信息并且登录了您才能下载这个文件!

对,就这么简单,如果加上role,可以进行更复杂的控制。
posted on 2005-10-23 13:24  LDAR泄漏检测与修复  阅读(1626)  评论(0)    收藏  举报