Ejemplo n.º 1
0
        private void SignIn(AdministratorData userData)
        {
            var userPrincipal = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, userData.UserId),
                new Claim(ClaimTypes.Name, userData.UserName ?? ""),
                new Claim(ClaimTypes.UserData, userData.ToJson())
            }, "Basic"));

            HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal,
                                    new AuthenticationProperties
            {
                ExpiresUtc   = DateTime.UtcNow.AddDays(7),
                IsPersistent = true,
                AllowRefresh = true
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建JWT
        /// </summary>
        /// <param name="userData"></param>
        /// <returns></returns>
        private static string BuildJwt(AdministratorData userData)
        {
            var tokenHandler    = new JwtSecurityTokenHandler();
            var authTime        = DateTime.UtcNow;
            var expiresAt       = authTime.AddYears(1);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new List <Claim>
                {
                    new Claim(JwtClaimTypes.Id, userData.UserId),
                    new Claim(ConstString.JwtCompanyId, userData.CompanyId),
                    new Claim(ConstString.KeyName, ConstString.KeyValue),
                    new Claim(ClaimTypes.UserData, userData.ToJson())
                }),
                Expires            = expiresAt,
                SigningCredentials =
                    new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ConstString.AuthKey)),
                                           SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(token));
        }