public async Task <IActionResult> login([FromBody] Login login) { var user = await userManager.FindByNameAsync(login.phone); if (user != null && await userManager.CheckPasswordAsync(user, login.password)) { var userRole = await userManager.GetRolesAsync(user); var authclaims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, user.UserName), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), }; foreach (var userrole in userRole) { authclaims.Add(new Claim("role", userrole)); } var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:Secret"])); var token = new JwtSecurityToken( issuer: _configuration["JWT:ValidIssuer"], audience: _configuration["JWT:ValidAudience"], expires: DateTime.Now.AddHours(500), claims: authclaims, signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256) ); var refreshObject = new Refreshtoken { userName = login.phone, refreshToken = Guid.NewGuid().ToString() }; await _ecommerContext.refreshtokens.AddAsync(refreshObject); await _ecommerContext.SaveChangesAsync(); var token1 = new JwtSecurityTokenHandler().WriteToken(token); var expire = token.ValidTo; var userrole1 = await userManager.IsInRoleAsync(user, "customer"); return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration = token.ValidTo, refreshToken = refreshObject.refreshToken })); } return(Unauthorized(new Response { status = "Lỗi", message = "Tài khoản không hợp lệ" })); }
public Refreshtoken GenerateRefreshToken(string token) { var principal = GetClaimsFromExpiredToken(token); var jti = principal.Claims.SingleOrDefault(x => x.Type == JwtRegisteredClaimNames.Jti).Value; var userId = principal.Claims.SingleOrDefault(x => x.Type == nameof(ApplicationUser.Id)).Value; var refreshToken = new Refreshtoken() { JwtId = jti, UserId = userId, CreateDate = DateTime.UtcNow, ExpiryDate = DateTime.UtcNow.AddMonths(jwtConfig.RefreshTokenExpiryInMonths), Token = GenerateRandomString() + Guid.NewGuid() }; return(refreshToken); }