問題我有在MVC3應用程序的用戶登錄和註銷的問題。下面是我的註銷行爲的例子在我的用戶控制:與註銷後立即清除會話環境與MVC3
public ActionResult Logout()
{
FormsService.SignOut();
Session.Clear();
return RedirectToAction("index", "home");
}
一旦用戶點擊註銷這個動作被調用時,它會清除會話信息,然後將用戶重定向到索引頁面。
在我的索引頁我所說的C#助手來顯示這樣一條消息:
@section links { @Html.HdrLinks("Home", "", Context.User) }
這裏的助手的部分代碼:
System.Security.Principal.IPrincipal user
if (user.Identity.IsAuthenticated)
{
return new MvcHtmlString("Welcome " + user.Identity.Name);
}
我的問題是,當指數頁面立即顯示後,它仍然顯示相同的會話信息。換句話說,它仍然顯示一個消息,如「歡迎約翰」。只有在刷新瀏覽器中的頁面後,才能正確看到會話中未設置用戶名。
有沒有人有什麼我可以做讓這個任何想法後,註銷或重定向則索引頁不會仍然認爲在用戶登錄?例如,除了RedirecToAction之外,還有一些可以幫助我執行的調用。
更新:
這似乎是當我在我的代碼更改,然後下面是我想要做什麼,當它到達顯示索引頁,然後它不告訴我,我仍然登錄然而我不知道爲什麼這個工作。
FormsService.SignOut();
Session.Clear();
Session.Abandon();
return new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "Index" }));
http://stackoverflow.com/questions/412300/formsauthentication-signout-does-not-log-the-user-out檢查了這一點,可以幫助:) –