예제 #1
0
 /// <summary>
 /// 保存
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public async Task Save(User user)
 {
     user.CreatedDate = DateTime.Now;
     user.Id          = Guid.NewGuid();
     user.Password    = user.Password.ToMD5Hash();
     db.Users.Add(user);
     await db.SaveChangesAsync();
 }
        public async Task <User> RegisterAsync(RegisterRequest userDto)
        {
            var user = await CreateUserFromDtoAsync(userDto);

            if (user != null)
            {
                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(jwtSettings.Secret);
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim(ClaimTypes.Name, user.UserId.ToString())
                    }),
                    Expires            = DateTime.UtcNow.AddDays(2),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var token            = tokenHandler.CreateToken(tokenDescriptor);
                var emailTokenString = tokenHandler.WriteToken(token);

                user.Verification = emailTokenString;

                dbcontext.Users.Update(user);
                await dbcontext.SaveChangesAsync();

                return(user);
            }
            return(user);
        }