我有一個帶有敏感信息鏈接的Web控制面板(如信用卡號碼)。 當用戶點擊其中一個鏈接時(之前登錄的人),我需要檢查他的信用。如何確保用戶剛剛登錄?
當他請求(「/sensitive-informations.aspx」)他剛剛輸入憑據時,我如何確定服務器端?
編輯:這裏的主要問題是「他剛剛進入他的憑據」,我需要確保他直接從登錄頁面。
我有一個帶有敏感信息鏈接的Web控制面板(如信用卡號碼)。 當用戶點擊其中一個鏈接時(之前登錄的人),我需要檢查他的信用。如何確保用戶剛剛登錄?
當他請求(「/sensitive-informations.aspx」)他剛剛輸入憑據時,我如何確定服務器端?
編輯:這裏的主要問題是「他剛剛進入他的憑據」,我需要確保他直接從登錄頁面。
有幾種方法可以做到這一點。例如,在用戶輸入他的憑證後,將它們保存在Session object中。
然後,在Page_Load
的sensitive-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
不空第一...
我知道如何限制對頁面的訪問,但我需要確保用戶直接來自登錄頁面。 – 2013-02-19 10:02:08
好吧,更新我的回答 – Blachshma 2013-02-19 10:11:58
因爲我對安迪說,我們首先雖然這個解決辦法,但一些殺毒軟件起飛的引薦,我們can'thave少數用戶(甚至0.1%),無法看到這個頁面。 – 2013-02-19 10:18:08
您可以檢查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.UrlReferrer
或Page.PreviousPage
)進行檢查。
雖然,但一些防病毒軟件會將引用者脫掉,我們可以讓一些用戶(甚至0.1%)無法看到這個頁面。 – 2013-02-19 10:17:33
你用什麼來驗證用戶?您可以在鏈接點擊時調用服務或http處理程序,並檢查當前用戶的憑證。 – 2013-02-19 09:00:08
@krshekhar這裏的問題不是如何登錄用戶,而是我怎麼知道他只是(上一頁)輸入了他的憑據 – 2013-02-19 10:03:54
@remobourgarel爲什麼不從上一頁發送這些值。並檢查頁面加載 – 2013-02-19 11:22:41