/// <summary> /// 验证用户是否登录 /// 验证访问的Action是否满足当前执行事件的要求 /// </summary> /// <param name="filterContext">未登陆或登录异常,页面跳转到登录页面</param> protected override void OnActionExecuting(ActionExecutingContext filterContext) { var userCachEntity = UserFormsPrincipal <UserEntity <UserInfo> > .TryParsePrincipal(System.Web.HttpContext.Current.Request); if (!HttpContext.User.Identity.IsAuthenticated || userCachEntity == null) { try { HttpCookie cookie = Request.Cookies[FormsAuthentication.FormsCookieName]; FormsAuthentication.SignOut(); cookie = new HttpCookie(FormsAuthentication.FormsCookieName, string.Empty); cookie.Expires = DateTime.Now.AddHours(-1); cookie.Path = FormsAuthentication.FormsCookiePath; if (System.Configuration.ConfigurationManager.AppSettings["HttpCookieDomain"] != null) { cookie.Domain = System.Configuration.ConfigurationManager.AppSettings["HttpCookieDomain"].ToString(); System.Web.HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\""); } Response.Cookies.Remove(FormsAuthentication.FormsCookieName); Response.Cookies.Set(cookie); } catch (Exception ex) { } System.Web.HttpContext.Current.Response.Redirect("/passport/login"); } }
/// <summary> /// 返回用户登录信息 /// </summary> /// <param name="userId"></param> /// <param name="pass"></param> /// <returns></returns> public OperationResult FindGxSysUser(string userId, string pass) { if (!string.IsNullOrEmpty(pass)) { //pass = Encrypt.MD5(Encrypt.MD5(pass + Encrypt.DesKey)); } GxSysUserRepository gxSysUserRepository = new GxSysUserRepository(uw); var models = gxSysUserRepository.FindAllGxSysUser().Find(t => t.USERID == userId && t.USERPWD == pass && t.USERSTATUS == 10); if (models != null) { UserInfo userinfo = new UserInfo(); userinfo.Id = models.ID; userinfo.UserId = models.USERID; userinfo.UserName = models.USERNAME; userinfo.Mobile = models.USERMOBILE; UserEntity <UserInfo> userEntity = new UserEntity <UserInfo>(); userEntity.IP = HttpContext.Current.Request.UserHostAddress; userEntity.UserInfo = userinfo; userEntity.TimeStamp = DateTime.Now; //userinfo.RoleId=models. string guid = Guid.NewGuid().ToString("N"); UserFormsPrincipal <UserEntity <UserInfo> > .SignIn(guid, userEntity, FormsAuthentication.Timeout); HttpCookie cookieForBC = new HttpCookie("SSOUserCookie", guid); HttpContext.Current.Response.Cookies.Add(cookieForBC); HttpCookie cookieForIP = new HttpCookie("SSOUserIP", userEntity.IP); HttpContext.Current.Response.Cookies.Add(cookieForIP); return(new OperationResult(OperationResultType.Success, "登录成功,正在跳转!")); } else { var model = gxSysUserRepository.FindAllGxSysUser().Find(t => t.USERID == userId); if (model != null) { return(new OperationResult(OperationResultType.QueryNull, "请输入正确的登录密码!")); } else { return(new OperationResult(OperationResultType.QueryNull, "未找到当前登录用户信息!")); } } }
public ActionResult Index(User user) { if (!ModelState.IsValid) { return(View(user)); } if (string.IsNullOrEmpty(user.Name)) { ModelState.AddModelError("Name", "用户名不能为空"); return(View(user)); } if (string.IsNullOrEmpty(user.Pwd)) { ModelState.AddModelError("Pwd", "密码不能为空"); return(View(user)); } if (db.CheckUser(user.Name, user.Pwd, out User userModel)) { var role = db.GetRoleById(userModel.RoleId); var userInfo = new UserInfo(); userInfo.UserId = role.Id; userInfo.RoleId = role.Id; userInfo.UserName = role.Name; userInfo.PList = role.PList; string perListKey = string.Format("userPermission_{0}", role.Id); if (HttpRuntime.Cache.Get(perListKey) == null) { HttpRuntime.Cache.Insert(perListKey, role.PList); } var cookie = UserFormsPrincipal <UserInfo> .SingIn(user.Name, userInfo, 100); return(RedirectToAction("Welcome")); } else { ModelState.AddModelError("Error", "用户名或者密码错误"); return(View(user)); } }
protected void Application_AuthenticateRequest(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; UserFormsPrincipal <UserInfo> .TrySetUserInfo(app.Context); }