最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Asp.Net二級域名共享Forms身份驗證、下載站/圖片站的授權(quán)訪問控制

 更新時間:2012年02月14日 22:00:42   作者:  
我們平時一般在做圖片或者文件下載權(quán)限控制的時候基本都是控制到下載頁面的,當你的下載地址暴露后,瀏覽者就直接可以通過文件地址進行下載了,這時候也就出現(xiàn)了我們常說的盜鏈
一般大家對小文件的解決辦法是直接在服務(wù)端讀取文件,然后輸出,這樣就避免了文件地址的暴露,這是一種解決辦法。而我現(xiàn)在想說的是使用 TransmitFile 方法直接輸出文件,但是這個方法對大文件的支撐力度有多少,以及會帶來多大的性能開銷,我還沒有測試過,有興趣的朋友可以測試下,并發(fā)表評論。

好了,進入正題,一般對下載站,大家想到的就是流量的問題,所以自動就想到應(yīng)該把文件與程序代碼分開部署。所以我給文件單獨做了一個二級域名,我們就叫 file.xxx.com 吧。主網(wǎng)站域名就是 www.xxx.com了,或者其他二級域名都行。

那第一步就是先要實現(xiàn)這2個站點之間的身份驗證共享了,比如登陸了主站后自動分站就實現(xiàn)登錄了,那.Net的Forms身份驗證很容易的就能實現(xiàn)這個功能,底層思路其實就是共享Cookie的原理。第二部就是給文件站做權(quán)限過濾。下面我們給主站以及文件站同時添加web.config。給他們加入相同的配置,Web.config主要配置代碼如下:
復制代碼 代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<connectionStrings>
</connectionStrings>
<appSettings>
</appSettings>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Home/LogOn" defaultUrl="/" timeout="600" slidingExpiration="true" name="File" path="/" enableCrossAppRedirects="true"></forms>
</authentication> <httpCookies domain=".xxx.com"/>
<machineKey validationKey="AAA977D304FB289C182E00C710A099C9F92986DC25AD69F8" decryptionKey="AAA2B3F76A9359431E717CA8275EE72EEEDC70ED55152010" validation="SHA1"/>
</system.web>
<!--此節(jié)點只需加到文件站下--> <system.webServer>
<handlers>
<add name="*.*" path="*.*" verb="*" type="Web.Handler.Download" />
</handlers>
</system.webServer>
</configuration>

以上配置文件針對跨域訪問的幾個關(guān)鍵配置點:一:authentication的name要相同,path="/" 表示cookie存儲路徑為根域名,enableCrossAppRedirects="true" 表示身份驗證是否可以重定向到其他應(yīng)用程序。二:httpCookie節(jié)點配置為頂級域名。三:兩個站點的machinekey必須相同。 那針對權(quán)限控制,通過實現(xiàn).Net里面的訪問過濾器,也就是IHttpHandler接口,用來攔截訪問。實現(xiàn)方法也很簡單,只要實現(xiàn)ProcessRequest方法就可以了,下面是我的代碼:
復制代碼 代碼如下:

namespace Web.Handler
{
/// <summary>
/// 文件下載登陸驗證
/// </summary>
public class Download : IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}

public void ProcessRequest(HttpContext context)
{
if (context.User.Identity.IsAuthenticated)
{
string fileName = context.Server.MapPath(context.Request.FilePath);
context.Response.ContentType = Path.GetExtension(fileName);
context.Response.TransmitFile(context.Request.FilePath);
}
else
{
context.Response.Write("您未登錄!");
}
}
}
}

寫完以上代碼后,那就是增加過濾配置了,注意上面的配置文件注釋,最主要的配置節(jié):<add name="*.*" path="*.*" verb="*" type="Web.Handler.Download" /> name是篩選器的名稱,隨便填,path表示你要過濾的文件后綴,我是所有文件都需要過濾,所以直接用*.*,如果單純只過濾jpg跟gif,可以改為:*.jpg,*.gif 即可,type表示過濾器Dll地址,也就是我們實現(xiàn)IHttpHandler的類全名,ok,文件訪問控制就已經(jīng)完成了。 注意:由于我使用的是IIS7,所以此處的Handler添加到了system.webSever節(jié)點下,IIS6及以下版本直接添加到system.web節(jié)點下就可以了。

相關(guān)文章

  • 如何實現(xiàn)ListView高效分頁代碼

    如何實現(xiàn)ListView高效分頁代碼

    ListView選擇自動分頁時 其實就是添加了一個DataPager分頁控件兩者間存在著嵌套關(guān)系《Repeater與ListView》中提到這樣的分頁并不是高效的 因為數(shù)據(jù)源還是返回了所有的數(shù)據(jù) 而非當前頁數(shù)據(jù)
    2013-02-02
  • MVC5下拉框綁定的方法(單選)

    MVC5下拉框綁定的方法(單選)

    這篇文章主要為大家詳細介紹了MVC5下拉框綁定,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • ajaxToolkit:ModalPopupExtender演示及實現(xiàn)代碼

    ajaxToolkit:ModalPopupExtender演示及實現(xiàn)代碼

    ajaxToolkit:ModalPopupExtender可以讓用戶模擬新開一個窗口,就是在模擬新開窗口作多項選項的功能,感興趣的朋友可以了解下,希望此文對你有所幫助
    2013-01-01
  • 利用asp.net實現(xiàn)生成不重復訂單號

    利用asp.net實現(xiàn)生成不重復訂單號

    訂單號在購物過程中起到了很好的識別作用,更方便的有利于工作人員識別商品,本文介紹利用asp.net實現(xiàn)生成訂單號
    2012-12-12
  • ASP.NET Core 7 Razor Pages項目發(fā)布到IIS的詳細過程

    ASP.NET Core 7 Razor Pages項目發(fā)布到IIS的詳細過程

    這篇文章主要介紹了ASP.NET Core 7 Razor Pages項目發(fā)布到IIS的詳細過程,詳細介紹了發(fā)布過程遇到的問題及解決方法,對ASP.NET Core 發(fā)布到IIS相關(guān)知識感興趣的朋友一起看看吧
    2023-01-01
  • asp.net DataList與Repeater用法區(qū)別

    asp.net DataList與Repeater用法區(qū)別

    Repeater比DataList要好一些,如果不是很大數(shù)據(jù)量的話,這點差別是體現(xiàn)不來的。
    2009-12-12
  • 獲取App.config配置文件中的參數(shù)值

    獲取App.config配置文件中的參數(shù)值

    這篇文章介紹了獲取app.config配置文件中的參數(shù)值方法,首先是要添加System.Configuration引用,其次類文件中必須有 using System.Configuration;再次App.config添加,最后向App.config配置文件添加參數(shù),下面通過列子給大家講解下,需要的朋友可以參考下
    2015-07-07
  • ASP.NET實現(xiàn)按拼音碼模糊查詢的方法

    ASP.NET實現(xiàn)按拼音碼模糊查詢的方法

    我們在做數(shù)據(jù)錄入或者查詢的時候,經(jīng)常需要實現(xiàn)按用戶輸入的拼音碼進行數(shù)據(jù)的模糊查詢功能,本文為大家介紹ASP.NET如何實現(xiàn)按拼音碼模糊查詢,需要的朋友可以參考下
    2015-09-09
  • asp.net動態(tài)產(chǎn)生checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)

    asp.net動態(tài)產(chǎn)生checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)

    動態(tài)產(chǎn)生一組checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)且post提交時后臺能及時獲取等等,打算使用repeater+input(checkbox)+input(hidden)來實現(xiàn)
    2013-10-10
  • netcore 生成驗證碼的過程詳解

    netcore 生成驗證碼的過程詳解

    這篇文章主要介紹了netcore 生成驗證碼的過程詳解,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-06-06

最新評論

五原县| 章丘市| 出国| SHOW| 青神县| 白银市| 班玛县| 镇宁| 嵊州市| 贵定县| 苏州市| 陈巴尔虎旗| 清苑县| 洪洞县| 专栏| 南涧| 扶风县| 曲靖市| 永城市| 浦城县| 资阳市| 广灵县| 城固县| 台江县| 淳化县| 色达县| 五华县| 三明市| 信阳市| 平舆县| 朔州市| 攀枝花市| 洞口县| 乌海市| 玛曲县| 柳州市| 忻城县| 平邑县| 奇台县| 安庆市| 遂宁市|