AuthorizationFilter身份驗證資訊

2021-08-31 16:17:37 字數 2630 閱讀 3058

最近被跨域問題搞得焦頭爛額,在前端ajax往伺服器端傳送請求的時候,我嘗試在請求報文header裡面自定義請求頭:

$.

ajax(,

success:

function

(data, status)

, error:

function

(error)})

;

後端伺服器:if(

!actioncontext.request.headers.

trygetvalues()

;}可是本來以為這樣寫沒問題,可是瀏覽器端一直給我返401:unauthorized錯誤,並且提示 已攔截跨源請求:同源策略禁止讀取遠端資源。(原因:cors 請求未能成功)

各種方法嘗試了,未果。。。。

之後發現是伺服器端未驗證通過客戶端的methods,需要在authorizationfilter過濾器的最開始,驗證請求報文的方法是不是options,如果不是直接打回,是的話返回200:accepted,然後進行後面authorizationfilter的驗證。

string method = actioncontext.request.method.

tostring()

;if(method ==

"options"

)

注意:必須給瀏覽器返回乙個200碼,才能進行自定義頭部資訊的驗證

總之,對症下藥就好了~~

}//orderedqs就是按照key(引數的名字)進行排序的querystring集合

var orderedqs = actioncontext.request.

getquerynamevaluepairs()

.orderby

(kv => kv.key)

;var segments = orderedqs.

select

(kv => kv.key +

"="+ kv.value)

;//拼接key=value的陣列

string qs = string.

join

("&"

, segments)

;//用&符號拼接起來

string computedsign = md5helper.

computemd5

;//計算qs+secret 的md5值

//使用者傳進來md5值和計算出來的比對一下,就知道資料是否有被篡改過

if(sign.

equals

(computedsign,stringcomparison.currentcultureignorecase)

)else;}

}}}

"access-control-allow-origin" value=

"*"/

>

"content-type" value=

/>

"access-control-allow-headers" value=

/>

"access-control-allow-methods" value=

"get, post, put, delete, options"

/>

<

/customheaders>

Forms 身份驗證

配置應用程式使用 forms 身份驗證 如果應用程式的根目錄中有 web.config 檔案,請開啟該檔案。複製 在system.web元素中,建立乙個authentication元素,並將它的mode屬性設定為 forms,如下面的示例所示 複製 在authentication元素中,建立乙個fo...

WebService身份驗證

web service身份驗證解決方案一 通過通過soap header身份驗證。1.我們實現乙個用於身份驗證的類,檔名mysoapheader.cs mysoapheader類繼承自system.web.services.protocols.soapheader。且定義了兩個成員變數,userna...

WebServices身份驗證

最近遇到乙個問題,暴露在網路上的web service如何做身份驗證,而不被其他人說是用。mysoapheader.cs類 using system using system.collections.generic using system.linq using system.web namespa...