protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { base.HandleUnauthorizedRequest(filterContext); LogUtil.Info("当前未登录的URL:" + filterContext.HttpContext.Request.RawUrl); string userAgent = filterContext.HttpContext.Request.UserAgent; string loginPage = OwnWebSettingUtils.GetLoginPage(""); if (userAgent.ToLower().Contains("micromessenger")) { LogUtil.Info("去往微信浏览器授权验证"); loginPage = OwnWebSettingUtils.WxOauth2(""); } else { LogUtil.Info("去往用户登录页面验证"); } if (!filterContext.HttpContext.Request.IsAuthenticated) { LogUtil.Info("用户没有登录或登录超时"); bool isAjaxRequest = filterContext.RequestContext.HttpContext.Request.IsAjaxRequest(); if (isAjaxRequest) { MessageBox messageBox = new MessageBox(); messageBox.No = Guid.NewGuid().ToString(); messageBox.Type = MessageBoxTip.Exception; messageBox.Title = "您没有权限访问,可能链接超时,请登录"; messageBox.LoginPage = loginPage; CustomJsonResult jsonResult = new CustomJsonResult(ResultType.Exception, ResultCode.Exception, "", messageBox); filterContext.Result = jsonResult; filterContext.Result.ExecuteResult(filterContext); filterContext.HttpContext.Response.End(); } else { filterContext.Result = new RedirectResult(loginPage); } } }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { LogUtil.SetTrackId(); base.OnActionExecuting(filterContext); var request = filterContext.HttpContext.Request; bool skipAuthorization = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true); if (!skipAuthorization) { var userInfo = OwnRequest.GetUserInfo(); bool isAjaxRequest = filterContext.RequestContext.HttpContext.Request.IsAjaxRequest(); string userAgent = filterContext.HttpContext.Request.UserAgent; string returnUrl = ""; if (isAjaxRequest) { returnUrl = request.UrlReferrer.PathAndQuery; } else { returnUrl = request.Url.PathAndQuery; } if (!string.IsNullOrEmpty(returnUrl)) { LogUtil.Info("OwnBaseController1->returnUrl:" + returnUrl); returnUrl = System.Web.HttpUtility.UrlEncode(returnUrl); LogUtil.Info("OwnBaseController2->returnUrl:" + returnUrl); } if (userInfo == null) { LogUtil.Info("用户没有登录或登录超时"); string loginPage = OwnWebSettingUtils.GetLoginPage(returnUrl); if (userAgent.ToLower().Contains("micromessenger")) { LogUtil.Info("去往微信浏览器授权验证"); loginPage = OwnWebSettingUtils.WxOauth2(returnUrl); } else { LogUtil.Info("去往用户登录页面验证"); } if (isAjaxRequest) { MessageBox messageBox = new MessageBox(); messageBox.No = Guid.NewGuid().ToString(); messageBox.Type = MessageBoxTip.Failure; messageBox.Title = "请登录"; messageBox.LoginPage = loginPage; CustomJsonResult jsonResult = new CustomJsonResult(ResultType.NoLogin, ResultCode.Failure, "", messageBox); filterContext.Result = jsonResult; filterContext.Result.ExecuteResult(filterContext); filterContext.HttpContext.Response.End(); } else { filterContext.Result = new RedirectResult(loginPage); } } else { LogUtil.Info("用户Id:" + this.CurrentUserId); } } }