2010-12-13 88 views
0

基本上我有3頁,登錄頁面,主頁和註冊頁面。在asp.net中的會話C#

我的用戶有2個訪問級別,管理員和用戶。

管理員可以去註冊apge,用戶不能。

登錄頁面有2個會話,名稱和角色。

在頁面加載時,我清除了這兩個會話。

如果登錄成功,我填寫了值。

我的問題是..

我以管理員身份登錄,會話[ 「名稱」] = 「管理員」;會話[ 「角色」] = 「管理員」;

我轉到主頁面,然後到超鏈接的註冊頁面。 (只爲管理員啓用)

在註冊pageload上,我檢查角色。如果它不是訪問,我重定向到主頁面。

每頁已註銷超鏈接。

我將重定向該鏈接以登錄頁面。

當我在加載登錄頁面時清除會話值時,它們都很清晰。

當我到達管理頁面時,我複製了URL。

我註銷並以其他用戶身份登錄。

我進入首頁。

我無法進入註冊頁面,因爲超鏈接處於禁用狀態。

但是,當我粘貼的URL,它可以去註冊頁面。

只有當我點擊某些東西時,它纔會重定向到主頁面,因爲page_load函數沒有在第一次運行。

有什麼想法?

回答

2

從你的解釋看來,這實際上是瀏覽器緩存頁面並且根本不發送請求的可能性很高。嘗試在網頁上打印用戶名,並查看當您再次點擊網址時是否會更改用戶名。您還可以使用Firebug,IE9 Dev Tools,Fiddler等工具查看是否發送了請求。

BTW考慮使用成員資格和角色提供者,而不是堅持的東西,在會話(http://odetocode.com/articles/427.aspx

+0

不,這是老的用戶名。不是新的。我忘了提到這一點。這就是爲什麼我認爲他們從不運行page_load函數因爲我改變了該函數的用戶名。 – william 2010-12-13 08:18:32

+0

所以它是瀏覽器緩存,不是嗎?你會得到舊的一切,服務器代碼不會運行。嘗試在沒有登錄的情況下打開頁面。嘗試在IE中打開它(我注意到IE瀏覽器不喜歡緩存整個頁面,而其他瀏覽器) – Stilgar 2010-12-13 09:18:11