佳木斯湛栽影视文化发展公司

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

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

熱門標(biāo)簽:團(tuán)購網(wǎng)站 Mysql連接數(shù)設(shè)置 電子圍欄 銀行業(yè)務(wù) 服務(wù)器配置 阿里云 Linux服務(wù)器 科大訊飛語音識(shí)別系統(tǒng)
一般大家對(duì)小文件的解決辦法是直接在服務(wù)端讀取文件,然后輸出,這樣就避免了文件地址的暴露,這是一種解決辦法。而我現(xiàn)在想說的是使用 TransmitFile 方法直接輸出文件,但是這個(gè)方法對(duì)大文件的支撐力度有多少,以及會(huì)帶來多大的性能開銷,我還沒有測(cè)試過,有興趣的朋友可以測(cè)試下,并發(fā)表評(píng)論。

好了,進(jìn)入正題,一般對(duì)下載站,大家想到的就是流量的問題,所以自動(dòng)就想到應(yīng)該把文件與程序代碼分開部署。所以我給文件單獨(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)限過濾。下面我們給主站以及文件站同時(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ì)跨域訪問的幾個(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)限控制,通過實(shí)現(xiàn).Net里面的訪問過濾器,也就是IHttpHandler接口,用來攔截訪問。實(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("您未登錄!");
}
}
}
}

寫完以上代碼后,那就是增加過濾配置了,注意上面的配置文件注釋,最主要的配置節(jié):add name="*.*" path="*.*" verb="*" type="Web.Handler.Download" /> name是篩選器的名稱,隨便填,path表示你要過濾的文件后綴,我是所有文件都需要過濾,所以直接用*.*,如果單純只過濾jpg跟gif,可以改為:*.jpg,*.gif 即可,type表示過濾器Dll地址,也就是我們實(shí)現(xiàn)IHttpHandler的類全名,ok,文件訪問控制就已經(jīng)完成了。 注意:由于我使用的是IIS7,所以此處的Handler添加到了system.webSever節(jié)點(diǎn)下,IIS6及以下版本直接添加到system.web節(jié)點(diǎn)下就可以了。
您可能感興趣的文章:
  • 淺談asp.net Forms身份驗(yàn)證詳解
  • 詳解ASP.NET MVC Form表單驗(yàn)證
  • 關(guān)于C#.net winform程序驗(yàn)證moss的集成身份認(rèn)證實(shí)例
  • ASP.NET Internet安全Forms身份驗(yàn)證方法
  • asp.net forms身份驗(yàn)證,避免重復(fù)造輪子
  • asp.net 基于forms驗(yàn)證的目錄角色權(quán)限的實(shí)現(xiàn)
  • asp.net Forms身份驗(yàn)證和基于角色的權(quán)限訪問
  • asp.net 特定目錄form驗(yàn)證
  • ASP.net Forms驗(yàn)證Demo
  • .net MVC使用IPrincipal進(jìn)行Form登錄即權(quán)限驗(yàn)證(3)

標(biāo)簽:江蘇 蚌埠 棗莊 衢州 萍鄉(xiāng) 廣元 衡水 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Asp.Net二級(jí)域名共享Forms身份驗(yàn)證、下載站/圖片站的授權(quán)訪問控制》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    左权县| 扎囊县| 伊春市| 托克逊县| 焉耆| 桐庐县| 虹口区| 南通市| 北宁市| 泾源县| 高州市| 东阿县| 渑池县| 密云县| 湟源县| 绥滨县| 徐水县| 都安| 屏边| 连城县| 乌鲁木齐县| 大关县| 弋阳县| 简阳市| 修文县| 道真| 龙门县| 黄大仙区| 开封县| 凤山县| 扬州市| 广灵县| 扶风县| 凤翔县| 包头市| 无棣县| 会泽县| 合山市| 喀喇| 东光县| 龙泉市|