Redirect 管理表单身份验证中的返回url
我有一个ASP MVC 5网站,我想管理返回url以将用户重定向到上一个请求的页面,但是当用户登录时,然后在加载孔页面之前登录(页面的某些部分是异步加载的),然后如果他再次尝试登录,他将被重定向到部分内容之一,或者有时他被重定向到加载图像或js文件。 如何控制返回url是由用户还是由浏览器请求的(从第一次加载开始)。Redirect 管理表单身份验证中的返回url,redirect,asp.net-mvc-5,form-authentication,Redirect,Asp.net Mvc 5,Form Authentication,我有一个ASP MVC 5网站,我想管理返回url以将用户重定向到上一个请求的页面,但是当用户登录时,然后在加载孔页面之前登录(页面的某些部分是异步加载的),然后如果他再次尝试登录,他将被重定向到部分内容之一,或者有时他被重定向到加载图像或js文件。 如何控制返回url是由用户还是由浏览器请求的(从第一次加载开始)。 提前感谢。我通过覆盖Authorize属性解决了这个问题: public class CustomAuthorize : AuthorizeAttribute {
提前感谢。我通过覆盖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" }));
}
}