筆者做一個報表展示的網站,報表使用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文檔http://localhost/sms/1.xls,看到什么?
呵呵,沒錯,需要您登錄了。當你輸入登錄信息并且登錄了您才能下載這個文件!
對,就這么簡單,如果加上role,可以進行更復雜的控制。
歡迎交流(maximon@sina.com 無錫國
|