
[英]After logout,how to redirect user to login page when he/she will click back button of browser in ASP.NET MVC3
[英]mvc logout after back button it redirect to main page
问题是在按下退出后退按钮后它没有重定向到登录页面。 我读了很多东西,我也尝试了很多解决方案。
目前的情况如下。
在Global.asax文件中
我添加了以下代码
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
}
在_Layout.cshtml
我打了电话
function logout()
{
window.location.href = '/account/logout';
}
在 accountController.cs 中
public ActionResult logout()
{
FormsAuthentication.SignOut();
System.Web.HttpContext.Current.Session.Abandon(); // it will clear the session at the end of request
System.Web.HttpContext.Current.Session.Clear();
System.Web.HttpContext.Current.Session.RemoveAll();
return RedirectToAction("login", "account");
}
当我按下后退按钮时,它会调用commonController
[SessionAuthorize]
[HttpPost]
public JsonResult getMenu()
{
masterReturn objmasterReturn = new masterReturn();
var client = new RestClient(string.Format("{0}/userMenu/getMenu", applicationTitle));
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "bearer " + Session["accessToken"].ToString() + "");
IRestResponse response = client.Execute(request);
if (response.StatusCode.ToString().ToLower() == "ok")
{
objmasterReturn.success = "true";
//var details = JObject.Parse(response.Content);
//dynamic item = JsonConvert.DeserializeObject<masterReturn>(response.Content);
//objmasterReturn.objectVal = item.objectVal;
objmasterReturn.objectVal = response.Content;
}
else
{
objmasterReturn.success = "false";
objmasterReturn.error = "error in api call !!!";
}
return Json(objmasterReturn);
}
现在在 FilterConfig.cs 文件中
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public class SessionAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return httpContext.Session["accessToken"] != null;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("~/account/logout");
}
}
}
现在有以下问题
filterContext.Result = new RedirectResult("~/account/logout");
我试过
filterContext.Result = new RedirectResult("/account/login");
但它不会重定向到登录页面。
还有其他工作选择吗?
而不是使用
filterContext.Result = new RedirectResult("~/account/logout");
像这样使用,我希望这能解决你的问题......
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "You Controller Name" }, { "action", "ActionMethod Name" } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.