2012-10-10 81 views
0

我在我的ASP.NET應用程序中有一個驗證(驗證)問題 - 我使用FormsAuthentication啓用了Cookie,但是由於安全原因,我不得不另外使用另一個外部授權來源(基於用戶名/密碼組合給出用戶「sessionID」)如何檢查用戶驗證(FormsAuthentication)是否使用cookie執行?

當用戶使用他的用戶名/密碼憑證登錄時(因此獲得sessionID),應用程序正常工作。但是,由於啓用了cookie,登錄頁面可以被「跳過」(用戶被重定向到default.aspx),並且他不會獲得正確的sessionID。

我的問題是,是否存在一種可能性,檢查用戶是否

一)從登錄頁面(因此,已經被重定向到Default.aspx的)

OR

二)來到formsAuthentication是基於cookie數據執行,而不是基於用戶名/密碼

回答

0

是的,您可以使用「request.UrlReferrer.ToString」來檢查用戶來自哪個頁面,並將其與您的登錄頁面URL進行比較。

0

假設您在用戶登錄後重定向到default.aspx頁面(例如,頁面加載現在包含來自重定向客戶端的身份驗證cookie),您會知道W是否與否,他們正在使用的global.asax.cs' Application_AuthenticateRequest事件「認證:

protected void Application_AuthenticateRequest(Object oSender, EventArgs eA) 
{ 
    // Wire up authenticated principal with user information. 

    if (this.Request.IsAuthenticated == true) 
    { 
     // do something with this.User.Identity.Name to map to a "sessionid" 
    } 
} 

你問有關確定他們是否只是登錄,並在家裏登陸爲重定向用戶,或者他們來到家(或任何其他視圖)直接使用瀏覽器保存的cookie,但我認爲沒關係。如果您將用戶的額外身份驗證密鑰存儲爲處理登錄的一部分,則可能應該在AuthenticateRequest事件中爲所有受保護頁面的訪問執行此操作。注意:該事件被激發了很多(CSS文件,圖像,無論)。您可能希望忽略除.aspx之外的所有請求。

相關問題