當我登出使用此控制器:如何註銷以便在呈現頁面時不知道用戶已通過身份驗證?
public class LogOffController : Controller
{
public ActionResult Index()
{
FormsAuthentication.SignOut();
return View();
}
}
呈現的頁面不知道我已經登出,並在剃刀網頁的一部分,我顯示用戶:
@if (Request.IsAuthenticated)
{
<text>Welcome <strong>@Profile.GetPropertyValue("FullName")</strong>
@if (User.IsInRole("Administrator"))
{
@Html.ActionLink("(Administrator)", "Index", "Administration")
}
[ @Html.ActionLink("Log Off", "Index", "LogOff") ]</text>
}
else
{
@Html.ActionLink("Login", "Index", "Login")
}
這仍然顯示用戶名稱和管理員角色仍像登錄一樣。我瀏覽的下一頁是正確的。
謝謝,這是有效的,'HttpContext.User = null;'是唯一需要的行。任何使用Thread線的理由? – user2586804
如果'Thread.CurrentPrincipal'不爲null,'Thread.CurrentPrincipal.Identity.IsAuthenticated'將爲true。如果你的代碼永遠不能訪問'Thread.CurrentPrincipal',你就沒事。但是,您可能也希望包含這一點,因爲如果下一位開發人員進入並使用'Thread.CurrentPrincipal',則會造成嚴重的安全漏洞。 – Win