/// <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");
            }
        }
예제 #2
0
        /// <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, "未找到当前登录用户信息!"));
                }
            }
        }
예제 #3
0
        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));
            }
        }
예제 #4
0
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;

            UserFormsPrincipal <UserInfo> .TrySetUserInfo(app.Context);
        }