我有控制器操作,用于注销用户。它可以通过两种方式实现:
<a href="/MayApp/Account/LogOut">Logout</a>
它运作正常。第二种方式是用户何时处于空闲状态(一段时间不做任何事)。一段时间后,AJAX调用发生并调用控制器动作,如下所示:
$。AJAX({ url:'/ MyApp / Account / LogOut', 类型:'GET', 成功:function(){ sessionStorage.removeItem( 'currentTime的'); } })
问题是因为第二种方式无法正常工作。它通常调用控制器操作,但控制器操作从不将用户重定向到登录页面。用户已注销,但仍保留在同一页面上。
我按以下方式使用重定向:
[AllowAnonymous]
public ActionResult LogOut()
{
// Some Logic
return Redirect(Url.Action("Login", "Account"));
}
我的问题是: 如果我使用异步调用会发生吗?
我也尝试过同步AJAX调用,但它不起作用。
如何以与AJAX不同的方式调用控制器动作?
由于
答案 0 :(得分:1)
尝试:
return RedirectToAction("Login", "Account");
修改强>
问题在于,因为AJAX调用正在调用Logout操作,所以它被重定向的AJAX调用。考虑到这一点,只需在JavaScript中使用window.location
执行客户端重定向。
您可以使用以下内容:
return JavaScript("window.location = 'http://www.google.co.uk'");
或重新加载当前页面(因此任何其他路由都可以说用户无权查看此页面。
return JavaScript("location.reload(true)");