国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - Asp.Net二級(jí)域名共享Forms身份驗(yàn)證、下載站/圖片站的授權(quán)訪問(wèn)控制

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

2019-09-28 12:04asp.net技術(shù)網(wǎng) ASP.NET教程

我們平時(shí)一般在做圖片或者文件下載權(quán)限控制的時(shí)候基本都是控制到下載頁(yè)面的,當(dāng)你的下載地址暴露后,瀏覽者就直接可以通過(guò)文件地址進(jìn)行下載了,這時(shí)候也就出現(xiàn)了我們常說(shuō)的盜鏈

一般大家對(duì)小文件的解決辦法是直接在服務(wù)端讀取文件,然后輸出,這樣就避免了文件地址的暴露,這是一種解決辦法。而我現(xiàn)在想說(shuō)的是使用 TransmitFile 方法直接輸出文件,但是這個(gè)方法對(duì)大文件的支撐力度有多少,以及會(huì)帶來(lái)多大的性能開(kāi)銷,我還沒(méi)有測(cè)試過(guò),有興趣的朋友可以測(cè)試下,并發(fā)表評(píng)論。 

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

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

復(fù)制代碼代碼如下:


<?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é)點(diǎn)只需加到文件站下--> <system.webServer> 
<handlers> 
<add name="*.*" path="*.*" verb="*" type="Web.Handler.Download" /> 
</handlers> 
</system.webServer> 
</configuration> 


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

復(fù)制代碼代碼如下:


namespace Web.Handler 

/// <summary> 
/// 文件下載登陸驗(yàn)證 
/// </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("您未登錄!"); 




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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品久久久 | 欧美一级欧美三级在线观看 | 99精品国产一区二区三区 | 中文字幕亚洲精品 | 毛片网站在线 | 中文字幕在线观看 | 永久免费看黄网站 | 日本久久免费 | 欧美久久久久久久 | 一级片视频在线观看 | 黄网视频| 精品国产黄a∨片高清在线 91精品国产91久久久 | 日韩免费在线视频 | 免费国产视频 | 日日夜夜添 | 中文字幕婷婷 | 精品视频网 | 精品在线一区二区 | 欧美综合影院 | 亚洲精品免费av | 黄视频免费观看网站 | 国产精品久久久99 | 日韩一二三区视频 | 特黄特黄一级片 | 欧美亚洲天堂 | 欧美日韩国产精品 | 久久久国产日韩 | 日本韩国欧美一区 | 成人免费一区二区三区视频软件 | 久久99国产精品久久99大师 | a级毛片免费高清视频 | 久久新 | 亚洲精品久久久久久一区二区 | 久久亚洲天堂 | 龙珠z国语版291集全 | 日韩欧美视频免费观看 | 在线观看一区二区视频 | 国产精品中文字幕在线观看 | 大毛片 | 成人夜晚看av | 中文字幕第9页 |