Skip to content

Instantly share code, notes, and snippets.

@HamidMosalla
Last active October 19, 2017 03:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HamidMosalla/6a81f2e9878008923af2b42ed45f820f to your computer and use it in GitHub Desktop.
Save HamidMosalla/6a81f2e9878008923af2b42ed45f820f to your computer and use it in GitHub Desktop.
Action method responsible for generating Jwt
[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