Last active
October 19, 2017 03:06
-
-
Save HamidMosalla/6a81f2e9878008923af2b42ed45f820f to your computer and use it in GitHub Desktop.
Action method responsible for generating Jwt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[AllowAnonymous] | |
[HttpPost] | |
public async Task<IActionResult> Generate([FromBody] LoginViewModel model) | |
{ | |
if (!ModelState.IsValid) return BadRequest("Could not create token"); | |
var user = await _userManager.FindByEmailAsync(model.Email); | |
if (user == null) return BadRequest("Could not create token"); | |
var result = await _signInManager.CheckPasswordSignInAsync(user, model.Password, false); | |
if (!result.Succeeded) return BadRequest("Could not create token"); | |
var userClaims = await _userManager.GetClaimsAsync(user); | |
userClaims.Add(new Claim(JwtRegisteredClaimNames.Sub, user.Email)); | |
userClaims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())); | |
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenOptions.Key)); | |
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); | |
var token = new JwtSecurityToken( | |
issuer: _tokenOptions.Issuer, | |
audience: _tokenOptions.Issuer, | |
claims: userClaims, | |
expires: DateTime.Now.AddMinutes(30), | |
signingCredentials: creds); | |
return Ok(new JwtSecurityTokenHandler().WriteToken(token)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment