예제 #1
0
        /// <summary>
        /// 保存登陆状态
        /// 为了和jwt保存同步 同用JwtRegisteredClaimNames.Jti
        /// </summary>
        /// <param name="jwtid"></param>
        /// <param name="user"></param>
        /// <param name="expires"></param>
        /// <param name="platform">0:web后台,1:app</param>
        /// <returns>当jwt标识登陆时返回string</returns>
        public string SignIn(string jwtid, Entities.sys_user user, DateTime expires, int platform = 0)
        {
            string userDataJson = JsonSerializer.Serialize(new UserData()
            {
                Id = user.id, Name = user.name, Account = user.account, IsAdmin = user.is_admin
            });

            switch (platform)
            {
            case 0:
                List <Claim> claims = new List <Claim>()
                {
                    new Claim(JwtRegisteredClaimNames.Jti, jwtid),
                    new Claim(ClaimTypes.Sid, user.id),
                    new Claim(ClaimTypes.UserData, userDataJson)
                };
                ClaimsIdentity  claimsIdentity  = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
                _httpContextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal, new AuthenticationProperties()
                {
                    ExpiresUtc = expires
                });
                break;

            case 1:
                return(_jwtFactory.CreateToken(new User()
                {
                    PrimarySid = platform, UserID = user.id, UserData = userDataJson, UserName = user.name
                }, jwtid, expires));
            }
            return(null);
        }
예제 #2
0
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public (bool Status, string Message) AddUser(Entities.sys_user user)
        {
            lock (addLock)
            {
                if (_dbContext.sys_user.Any(o => o.account == user.account && !o.is_deleted))
                {
                    return(Fail("用户账号已经存在"));
                }
                _dbContext.sys_user.Add(user);
                _dbContext.SaveChanges();
                string newJson = JsonSerializer.Serialize(user);
                _activityLogService.InsertedEntity <Entities.sys_user>(user.id, null, newJson, user.creator);

                return(Success("添加成功"));
            }
        }