2010-06-29 86 views
0

我感興趣的禁止註銷後執行以下操作:禁止訪問頁面註銷後(Session.Abandon)在C#/ ASP.NET

- 沒有後退按鈕

- 不能直接訪問通過URL的頁面 - 例如:如果用戶註銷,那麼他們不應該被允許使用某個URL看到緩存頁面(例如,用網址http://mysite.com/Gotothispage.aspx中的有效URL替換URL)

我見過類似像這樣的問題:How to disable the back button in browser when user logout in asp.net c#

我知道我可以在母版頁上設置緩存,但是當用戶實際登錄時,我失去了使用後退按鈕的能力。我在這種理解中正確嗎?

回答

2

頁面要麼是可緩存的,要麼不是,瀏覽器不知道您是否登錄。你不能以某種方式回顧已經過期的瀏覽器緩存的對象。

+0

好點和理解 - 我只是爲了避免其他用戶轉到上一個用戶的特定URL(在上一個用戶註銷後)並且可以看到一個緩存頁面的情況 - 該緩存頁面上有敏感數據。 – 2010-06-29 19:03:52

0

如果您的安全設置正確,則在註銷後應該已禁用頁面。

如果你有一個母版頁或BasePage類專爲登錄的用戶,你應該檢查他們是否有你,當他們登錄設置的sessionId。

如果他們不這樣做,他們重定向到另一頁。

用戶可能會看到頁面的緩存版本,但無法對其執行任何操作。

在我的會員BasePage類,我檢查,如果他們登錄上的OnInit事件:

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 

    if (!IsLoggedIn) 
    { 
     Response.Redirect("default.aspx"); 
    } 
} 

編輯:

什麼有些網站is..after您登錄的人員關閉,他們將您重定向到一個臨時煉獄頁面,表明它正在註銷您。此煉獄頁面將關閉緩存,並有一個元刷新標記,可將您帶到目標頁面。

所以當用戶點擊後退按鈕時,它會將他們帶到煉獄頁面,然後將他們引導回到他們所在的位置。

Gmail會這樣做,但有時候速度太快,您無法辨別。

+0

看到緩存頁面是問題 - 即,如果用戶正在使用共享機器並註銷網站,另一個人可以使用該機器並單擊歷史記錄並查看一些頁面。 – 2010-06-29 18:24:42

+0

是的,達米恩提出的要比我最初的要好 - 這就是我想要避免的。 – 2010-06-29 19:04:24

0

然後我失去當用戶實際上是 登錄使用 後退按鈕的能力。我在這個 理解是否正確?

並非完全 - 您在使用POST提交的頁面上使用後退按鈕時遇到問題,但無法使用GET。

一個簡單的例子就是想象一個帶頁面Gridview的ASP.NET頁面 - 用戶點擊頁面1,2,3,4,5等來瀏覽網格。

使用POST時,每次用戶點擊網格中的另一個頁面時,都會導致回發到同一頁面。如果用戶在完成此操作後單擊後,會出現頁面過期錯誤。

使用GET,用戶每次點擊網格中的另一個頁面時,都會使用查詢字符串(即Grid.aspx?Page = 2)將它們重定向到同一頁面。在這種情況下,用戶可以點擊返回,並且將它們帶到上一頁而沒有任何問題。

+0

不幸的是,這是一個已經「內置」的系統和大量與回發等相關的代碼。此外,「漂亮」(小 - 無parms)的網址是非常喜歡的。 – 2010-06-29 19:05:51

+0

所以再次重新閱讀答覆(謝謝大家順便說一句),似乎我的唯一選擇是1)讓用戶看到緩存頁面;或2)在頁面上設置no-cache,繼續使用POST,這將禁止用戶使用瀏覽器返回頁面;或3)設置no-cache,更改爲GET? – 2010-06-29 19:10:18