使用Session而不使用JavaScript / JQuery在MVC中注销

时间:2012-07-28 11:07:50

标签: asp.net-mvc

嗨,我对MVC 3比较陌生,我正在注销我的应用程序,我设法登录,即使在另一个标签页上打开网站,也能保持登录状态。

我的所有观点(当然除了家庭)都有:

  

<a href = "@Url.Action("Index", "Home")">Logout</a>

在我的控制器中我有这个:

  

public ViewResult Logout() { Session.Abandon(); return View("Index", "Home"); }

并且应用程序未注销,而是返回当前视图。

请帮助我了解该怎么做,我想注意我使用的是ViewResult而不是ActionResult,我也不会使用JavaScript或JQuery,因为我正在制作这个应用来展示MVC的工作原理。

2 个答案:

答案 0 :(得分:2)

你不应该指出退出行动吗?

<a href = "@Url.Action("Logout", "Home")">Logout</a>

假设您退出操作的路径为\Home\Logout

<强>更新

另一种老式的方式是..

成功登录后..

Session["Login"] = true; //or any object that describes the user's identity

在每个页面上您需要检查

var login = Session["Login"];
if(Convert.ToBoolean(login)){ //or cast to your expected object
  //do something
}
else{
  //redirect to logout/login page
}

退出时,

Session["Login"] = null;

答案 1 :(得分:2)

如果您使用的是表单身份验证,则还应清除身份验证Cookie并在注销后重定向:

public ActionResult Logout() 
{ 
    Session.Abandon(); 
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home"); 
}