예제 #1
0
        private User AuthenticateUser(AspNetUsers userEntity)
        {
            var userRoles = new List <string>();
            var user      = userEntity.Adapt <User>();

            if (userEntity.AspNetUserRoles != null && userEntity.AspNetUserRoles.Count > 0)
            {
                //user.Roles = userEntity.AspNetUserRoles.Select(x => x.RoleId).ToList();
                userRoles = GetUserRoles(userEntity.AspNetUserRoles.Select(x => x.RoleId).ToList());
            }
            var userClaims      = SetUserClaims(userEntity.Id.ToString(), userRoles);
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_settings.AuthenticationSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(userClaims),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            user.Token          = tokenHandler.WriteToken(token);
            user.Password       = null;
            user.EmailConfirmed = userEntity.EmailConfirmed;
            user.Roles          = userRoles;
            return(user);
        }