我知道之前已經提出過類似的問題,但我找不到能夠專門處理ASP.NET MVC(以及控制器方面)的重複內容。設置/獲取用戶是否登錄信息的最佳實踐
我的問題如下:
在MVC模式,我的理解是,控制器應該處理使用的HttpContext,以確定誰登錄,如果有的話。這是控制器可以將這些信息呈現給視圖,以便視圖本身不必執行這些查找。
有沒有關於如何做的事實標準?
我目前的設置如下[簡體]
我有一個BaseController
,其中我的所有其他控制器繼承。
在BaseController
,我執行以下重寫:
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
ViewData["IsUserLoggedIn"] = IsUserLoggedIn; // bool property checking HttpContext.User.Identity.IsAuthenticated;
ViewData["CurrentUser"] = CurrentUser; // Property returning logged in user, or null.
}
然後,自然地,在我的意見,我可以檢查ViewData的值。
你怎麼辦?我想知道我的設置是否有問題,如果有,有什麼問題?我對解決方案並不滿意,主要是因爲我對週期不太熟悉,而且我不確定自己的代碼是否放在正確的位置。
我知道這裏可能沒有「一個答案綁定他們」,我接受的答案提供了最深入的見解。
有趣的方法。您的cookie方案如何與FormsAuthentication cookie相關聯(當然,如果您使用表單身份驗證)? – Terje 2010-01-09 19:28:09
我沒有使用FormsAuthentication,但我確實使用了常規的FormsAuthenticationTicket和HttpCookie。 當用戶嘗試登錄時,我的控制器首先會調用我的域名層以嘗試登錄該用戶。如果成功,那麼我的控制器將創建一個包含我的加密用戶名的FormsAuthenticationTicket對象,將它放入一個HttpCookie中,並將該Cookie放入Response.Cookies集合中。 在過去,我還必須添加一些東西到系統中以跟蹤用戶實際登錄的情況(即,您從票據載入用戶,然後檢查他們是否也已登錄)。 – 2010-01-12 15:23:47
我一直在尋找見解,並且我得到了一些。謝謝。我會研究這種方法,並從我自己的經驗中看到它與我目前使用的相比如何。跟蹤用戶是否登錄;我用我的用戶表中的最後一個活動標記來處理它,並在每次調用BaseController的Initialize時更新它。 – Terje 2010-01-15 12:42:27