1
我有以下情形:如何處理這兩個登錄用戶和匿名用戶的動作
- 我有一個ASP.NET MVC的網站/ web應用程序,幾乎所有的控制器由
[AuthorizeAttribute]
- 我有保護引入了新的頁面(一個新的控制器+對它的一些操作),這對登錄用戶和兩個匿名用戶(我稱之爲'public' urls)都可用。對於匿名用戶,我們也使用Session來存儲關鍵數據(例如,通過某些ID識別匿名用戶等)。這些'public'的
LayoutView
設置的操作是否設置當前用戶是否已通過身份驗證(登錄)。如果他們被認證,則整個childView
(由'公開'動作顯示)被嵌入到主佈局頁面中,該頁面顯示登錄用戶的菜單等。匿名用戶沒有菜單,僅僅是純粹的childview
頁面。
我的問題:
- 如果在用戶超時記錄,並試圖訪問上述公共 -urls,那麼頁面會處理他作爲一個notloggedin用戶(這樣的匿名用戶),所以在她訪問新的url之前,她會看到登錄界面,點擊之後,她會看到一個匿名界面,這可能會嚇到她!我無法將她重定向到/ Account/Logon/RedirectUrI = whatever,因爲她訪問的網址對於未登錄的用戶也是有效的。
我能想到的唯一的解決辦法是引入該調用相同BLL邏輯,當前的,但對他們[AuthorizedAttribute]
另一個控制器/行動。但是,這我想避免的,因爲:
- 它的代碼重複的一點點
- 公共頁面的URL將是不同的登錄的用戶以及匿名用戶,以及我想讓它們保持不變,因此登錄的用戶可以隨意複製粘貼這些網址,傳播這個詞,並且該網址仍然能夠處理匿名用戶。
好主意,Jan,我現在檢查一下。一個問題:我會將這個cookie的到期日期設置爲「從不」。 – Csabi
這取決於您的用戶多久返回並訪問您的網站。當用戶通常幾乎每天都訪問您的網站時,將截止日期設置爲凌晨左右就足夠了。 – Jan