繁体   English   中英

后退按钮后 mvc 注销它重定向到主页

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM