Example #1
0
        /// <summary>
        ///保存用户状态
        /// </summary>
        /// <param name="uInfo"></param>
        public void SetSession(BaseUserResult uInfo)
        {
            bool setFlag = false;

            if (_httpContext.Session == null)
            {
                throw new ArgumentNullException();
            }

            if (string.IsNullOrEmpty(_httpContext.Session.GetString(UserSessionKey)))
            {
                setFlag = true;
            }
            else
            {
                var user = JsonConvert.DeserializeObject <BaseUserResult>(_httpContext.Session.GetString(UserSessionKey));
                if (user != null && user.Id != uInfo.Id)
                {
                    setFlag = true;
                }
                ;
            }

            if (setFlag)
            {
                try
                {
                    _httpContext.Session.SetString(UserSessionKey, JsonConvert.SerializeObject(uInfo));
                }
                catch
                {
                    // ignored
                }
            }
        }
Example #2
0
        public IActionResult Index(Login login)
        {
            if (ModelState.IsValid)
            {
                login.Password = EncryptHelper.MD5DesEncrypt(login.Password);
                var userInfo = SqlSugarDbContext.Instance.ExecutedSql().Queryable <Admin>().Where(w => w.Account == login.Email).First();
                if (userInfo != null)
                {
                    if (userInfo.Password != login.Password)
                    {
                        ModelState.AddModelError(string.Empty, "登录失败,密码错误");
                        return(View(login));
                    }
                    var user = new BaseUserResult
                    {
                        Id      = userInfo.Id,
                        Name    = userInfo.Name,
                        Token   = userInfo.Token,
                        Account = userInfo.Account,
                        RoleId  = userInfo.RoleId
                    };

                    _Authentication.SetAuth(user, login.RememberMe);
                    return(Redirect(TempData["returnUrl"] == null ? "/Home/Index" : TempData["returnUrl"].ToString()));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "登录失败,用户名或密码错误");
                    return(View(login));
                }
            }
            return(View(login));
        }
Example #3
0
        /// <summary>
        ///保存用户状态
        /// </summary>
        /// <param name="uInfo"></param>
        public void SetSession(BaseUserResult uInfo)
        {
            bool setFlag = false;

            if (_httpContext.Session == null)
            {
                throw new ArgumentNullException();
            }

            if (string.IsNullOrEmpty(_httpContext.Session.GetString(UserSessionKey)))
            {
                setFlag = true;
            }
            else
            {
                var user = JsonConvert.DeserializeObject <BaseUserResult>(_httpContext.Session.GetString(UserSessionKey));
                if (user != null && user.Id != uInfo.Id)
                {
                    setFlag = true;
                }
                ;
            }

            if (setFlag)
            {
                try
                {
                    IList <BaseSysMenu> menus;
                    var sql = string.Empty;
                    //管理员
                    if (uInfo.RoleId == 1)
                    {
                        sql = $@"select Id,`Name`,Controller,Action from SysMenu  where Valid=1";
                    }
                    else
                    {
                        //查询用户菜单
                        sql = $@"select m.Id,`Name`,Controller,Action from SysMenu as m left join RoleMenu r 
            on m.Id=r.MenuId  where r.RoleId={uInfo.RoleId} and r.UserId={uInfo.Id} and m.Valid=1 and r.Valid=1";
                    }
                    //菜单信息表
                    menus = SqlSugarDbContext.Instance.ExecutedSql().SqlQueryable <BaseSysMenu>(sql).ToList();
                    _httpContext.Session.SetString(PermissionKey, JsonConvert.SerializeObject(menus));
                    _httpContext.Session.SetString(UserSessionKey, JsonConvert.SerializeObject(uInfo));
                }
                catch
                {
                    // ignored
                }
            }
        }
Example #4
0
        /// <summary>
        /// 写入验证信息
        /// </summary>
        /// <param name="uInfo"></param>
        /// <param name="isPersistent">是否保存</param>
        public void SetAuth(BaseUserResult uInfo, bool isPersistent)
        {
            //当前登录的用户信息
            var claims = new List <Claim>
            {
                new Claim("UserId", uInfo.Id.ToString())
            };
            var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

            //可以使用HttpContext.SignInAsync方法的重载来定义持久化cookie存储用户认证信息,例如下面的代码就定义了用户登录后60分钟内cookie都会保留在客户端计算机硬盘上,
            //即便用户关闭了浏览器,60分钟内再次访问站点仍然是处于登录状态,除非调用Logout方法注销登录。
            //_httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity));
            _httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity),
                                     new AuthenticationProperties()
            {
                IsPersistent = isPersistent,
                ExpiresUtc   = isPersistent ? DateTimeOffset.Now.AddDays(7) : DateTime.Now.AddHours(6)
            });
            SetSession(uInfo);
        }