2013-02-19 86 views
-1

我有一個帶有敏感信息鏈接的Web控制面板(如信用卡號碼)。 當用戶點擊其中一個鏈接時(之前登錄的人),我需要檢查他的信用。如何確保用戶剛剛登錄?

當他請求(「/sensitive-informations.aspx」)他剛剛輸入憑據時,我如何確定服務器端?

編輯:這裏的主要問題是「他剛剛進入他的憑據」,我需要確保他直接從登錄頁面。

+0

你用什麼來驗證用戶?您可以在鏈接點擊時調用服務或http處理程序,並檢查當前用戶的憑證。 – 2013-02-19 09:00:08

+0

@krshekhar這裏的問題不是如何登錄用戶,而是我怎麼知道他只是(上一頁)輸入了他的憑據 – 2013-02-19 10:03:54

+0

@remobourgarel爲什麼不從上一頁發送這些值。並檢查頁面加載 – 2013-02-19 11:22:41

回答

1

有幾種方法可以做到這一點。例如,在用戶輸入他的憑證後,將它們保存在Session object中。

然後,在Page_Loadsensitive-informations.aspx確保Session對象存在。

爲了更好地說明這一點:

在你login.aspx.cs頁:在你的敏感,informations.aspx.cs

protected btnLoginClick(...) 
{ 
    // CHECK USERNAME and PASSWORD 
    if (UserIsAuthenticated) 
    { 
     Session["UserName"] = user; 
    } 
} 

然後

protected page_load(...) 
{ 
    // If UserName doesn't exist in Session, don't allow access to page 
    if (Session["UserName"] == null) 
    { 
     Response.Redirect("INVALID_USER.aspx"); 
    } 

} 

編輯:

根據OP的評論,如果你想要知道您來自哪個頁面,您可以使用: Page.PreviousPage這樣的:

protected void Page_Load(object sender, EventArgs e) 
    { 
     var x = this.Page.PreviousPage; 

或使用Request.UrlReferrer這樣的:

protected void Page_Load(object sender, EventArgs e) 
    { 
     var x = Request.UrlReferrer; 

在這兩種情況下,確保x不空第一...

+0

我知道如何限制對頁面的訪問,但我需要確保用戶直接來自登錄頁面。 – 2013-02-19 10:02:08

+0

好吧,更新我的回答 – Blachshma 2013-02-19 10:11:58

+0

因爲我對安迪說,我們首先雖然這個解決辦法,但一些殺毒軟件起飛的引薦,我們can'thave少數用戶(甚至0.1%),無法看到這個頁面。 – 2013-02-19 10:18:08

0

您可以檢查Page_Load事件sensitive-informations.aspx中的UrlReferrer

if (Request.UrlReferrer != null) 
{ 
    if (Request.UrlReferrer.AbsolutePath.ToLower().Contains("you-login-page")) 
    { 
     //User came from the login page 
    } 
} 

UPDATE 基於您的評論,你應該檢查的MembershipUser class

這個LastLoginDate屬性會給你的,好了,上次登錄的當前用戶的日期。您可以將其與當前日期/時間進行比較,以確保用戶「剛剛輸入了他們的憑據」。將此與檢查用戶來自哪裏(使用Request.UrlReferrerPage.PreviousPage)進行檢查。

+0

雖然,但一些防病毒軟件會將引用者脫掉,我們可以讓一些用戶(甚至0.1%)無法看到這個頁面。 – 2013-02-19 10:17:33