Exemplo n.º 1
0
        /// <summary>
        /// 通过当前登录用户的token 获取用户信息,并缓存
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public Entities.SysUser getLogged(string token)
        {
            Entities.SysUserToken userToken = null;
            Entities.SysUser      sysUser   = null;

            //   _memoryCache.TryGetValue<Entities.SysUserToken>(token, out userToken);
            if (userToken != null)
            {
                //        _memoryCache.TryGetValue(String.Format(MODEL_KEY, userToken.SysUserId), out sysUser);
            }
            if (sysUser != null)
            {
                return(sysUser);
            }

            Guid tokenId = Guid.Empty;

            if (Guid.TryParse(token, out tokenId))
            {
                var tokenItem = _sysUserTokenRepository.Table.Include(x => x.SysUser)
                                .FirstOrDefault(o => o.Id == tokenId);
                if (tokenItem != null)
                {
                    //   _memoryCache.Set(token, tokenItem, DateTimeOffset.Now.AddHours(4));
                    //缓存
                    //       _memoryCache.Set(String.Format(MODEL_KEY, tokenItem.SysUserId), tokenItem.SysUser, DateTimeOffset.Now.AddHours(4));
                    var model = _sysUserRepository.Table.FirstOrDefault(o => o.Id == tokenItem.SysUserId);

                    return(model);
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        public (bool Status, string Message, string Token, Entities.SysUser User) ValidUser(string account, string password, string r)
        {
            var user = GetByAccount(account);

            if (user == null)
            {
                return(false, "用户名或密码错误!", null, null);
            }
            //被冻结
            if (!user.Enabled)
            {
                return(false, "用户已被冻结!", null, null);
            }

            //被锁住的情况
            if (user.LoginLock)
            {
                if (user.AllowLoginTime > DateTime.Now)
                {
                    return(false, "账号已被锁定,剩余" + ((int)(user.AllowLoginTime - DateTime.Now).Value.TotalMinutes + 1) + "分钟", null, null);
                }
            }


            var md5Password = EncryptorHelper.GetMD5(user.Password + r);

            //登录成功
            if (password.Equals(md5Password, StringComparison.InvariantCultureIgnoreCase))
            {
                user.LoginLock      = false;
                user.LoginFailedNum = 0;
                user.LastLoginTime  = DateTime.Now;
                user.LastIpAddress  = "";

                //登录日志
                user.SysUserLoginLogs.Add(new SysUserLoginLog
                {
                    Id        = Guid.NewGuid(),
                    IpAddress = "",
                    LoginTime = DateTime.Now,
                    Message   = "登录:成功",
                    UserId    = user.Id
                });
                var userToken = new Entities.SysUserToken
                {
                    Id         = Guid.NewGuid(),
                    SysUserId  = user.Id,
                    ExpireTime = DateTime.Now.AddDays(15)
                };
                user.SysUserTokens.Add(userToken);

                _repository.DbContext.SaveChanges();

                return(true, "登录成功", userToken.Id.ToString(), user);
            }
            else
            {
                //登录日志
                user.SysUserLoginLogs.Add(new SysUserLoginLog
                {
                    Id        = Guid.NewGuid(),
                    IpAddress = "",
                    LoginTime = DateTime.Now,
                    Message   = "登录:密码错误!",
                    UserId    = user.Id
                });
                user.LoginFailedNum++;
                if (user.LoginFailedNum > 5)
                {
                    user.LoginLock      = true;
                    user.AllowLoginTime = DateTime.Now.AddHours(2);
                }
                _repository.DbContext.SaveChanges();
            }

            return(false, "用户名或密码错误!", null, null);
        }