在Microsoft ASP.NET MVC 5中,
如何从帐户控制器的LogOff操作以外的操作中签出用户?几年前我会使用返回RedirectToAction(“LogOff”,“Account”),但现在它不再起作用,因为LogOff是Post动作(不是GET)。
public ActionResult SomeActionOfSomeController() {
// some logic
return RedirectToAction("LogOut", "Account"); //does not work since LogOut has HttpPost attribute
}
答案 0 :(得分:1)
这就是我这样做的方式,而且它正在使用GET方法,这是你要求的吗?
[HttpGet]
public ActionResult Logout()
{
WebSecurity.Logout();
// instead of displaying logout page directly we redirect to confirmation page.
// this will ensure auth cookie is cleared, which, in turn, ensures correct menu items are displayed
return RedirectToAction("LogoutConfirm");
}
[HttpGet]
public ActionResult LogoutConfirm()
{
return View();
}
答案 1 :(得分:0)
你可以这样做吗?
@using (Html.BeginForm("LogOff", "Account"))
{
@Html.AntiForgeryToken()
<button type="submit">Logout</button>
}
你可以这样做,如果你想要一个链接,而不是按钮
@using (Html.BeginForm("LogOff", "Account",
FormMethod.Post, new { id = "LogOffForm" }))
{
@Html.AntiForgeryToken()
<a href="@Url.Action("LogOff", "Account")"
onclick="$('#LogOffForm').submit();">Logout</a>
}
答案 2 :(得分:0)
您的SomeActionOfSomeController是否存在于Account Controller或其他控制器中?
如果它存在于AccountController中,那么您可以执行以下操作,而不是调用redicttoaction。
public ActionResult Index2()
{
return Index3();
}
[HttpPost]
public ActionResult Index3()
{
return Content("Test");
}
如果是来自其他控制器操作,则必须创建AccountController的对象,然后调用Method。
希望这会对你有所帮助。