ruMoonGuard

Untitled

Mar 30th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.99 KB | None | 0 0
  1. public class LogoutModel
  2.     {
  3.         public string Username { get; set; }
  4.         public string Password { get; set; }
  5.     }
  6.  
  7.     [Route("api/token")]
  8.     public class TokenController : Controller
  9.     {
  10.         private readonly UserManager<User> _userManager;
  11.         private readonly IOptions<AuthOptions> _options;
  12.  
  13.         public TokenController(UserManager<User> userManager, IOptions<AuthOptions> options)
  14.         {
  15.             _userManager = userManager;
  16.             _options = options;
  17.         }
  18.  
  19.         [HttpPost("create")]
  20.         public IActionResult Create([FromBody]LogoutModel model)
  21.         {
  22.             var user = _userManager.FindByNameAsync(model.Username).Result;
  23.  
  24.             if (user == null || !_userManager.CheckPasswordAsync(user, model.Password).Result) return StatusCode(400);
  25.  
  26.             var token = GenerationToken(user);
  27.  
  28.             return Ok(new { token });
  29.         }
  30.  
  31.         private string GenerationToken(User user)
  32.         {
  33.             var claims = new List<Claim>
  34.             {
  35.                 new Claim(ClaimsIdentity.DefaultNameClaimType, user.Email),
  36.                 new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
  37.             };
  38.  
  39.             var key = _options.Value.GetSymmetricSecurityKey();
  40.             var creds = new SigningCredentials(_options.Value.GetSymmetricSecurityKey(),
  41.                     SecurityAlgorithms.HmacSha256);
  42.  
  43.             var date = DateTime.UtcNow;
  44.  
  45.             var token = new JwtSecurityToken(
  46.                 issuer: _options.Value.ISSUER,
  47.                 audience: _options.Value.AUDIENCE,
  48.                 notBefore: date,
  49.                 claims: claims,
  50.                 expires: date.Add(TimeSpan.FromMinutes(_options.Value.LIFETIME)),
  51.                 signingCredentials: new SigningCredentials(_options.Value.GetSymmetricSecurityKey(),
  52.                     SecurityAlgorithms.HmacSha256)
  53.             );
  54.  
  55.             return new JwtSecurityTokenHandler().WriteToken(token);
  56.         }
  57.     }
Advertisement
Add Comment
Please, Sign In to add comment