在表单身份验证中管理返回URL

时间:2015-09-14 12:39:11

标签: redirect asp.net-mvc-5 form-authentication

我有一个ASP MVC 5网站,我想管理返回URL以将用户重定向到最后请求的页面,但是当用户登录时,则在加载孔页面之前记录(页面的某些部分)是异步加载的,然后如果他再次尝试登录,他将被重定向到部分内容之一,或者有时他被重定向到加载图像或js文件。 如何控制用户或浏览器(从第一次加载)请求返回URL。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我通过覆盖Authorize属性解决了这个问题:

 public class CustomAuthorize : AuthorizeAttribute
    {
        public CompanyServiceBase CompanyService { get; set; }

        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                string returnUrl = null;
                var controller = (System.Web.Mvc.Controller)filterContext.Controller;
                if (!controller.Request.IsAjaxRequest())
                {
                    returnUrl = controller.Request.Url.AbsoluteUri.ToString();
                }

                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary()
            {
                { "client", filterContext.RouteData.Values[ "client" ] },
                { "controller", "Account" },
                { "action", "Login" },
                { "ReturnUrl", returnUrl }
            });
            }
            else
            {
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "AccessDenied", controller = "Main" }));
            }
        }