private TokenGenerado createToken(string username) { //Data do Token DateTime issuedAt = DateTime.UtcNow; //Tempo de expiraçao em dias DateTime expires = DateTime.UtcNow.AddDays(1); var tokenHandler = new JwtSecurityTokenHandler(); //cria a identidade do usuário que será concedido acesso ClaimsIdentity claimsIdentity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, username.ToUpper()) }); const string sec = "401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1"; var securityKey = new SymmetricSecurityKey(System.Text.Encoding.Default.GetBytes(sec)); var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature); //cria o token propriamente dito JwtSecurityToken token = tokenHandler.CreateJwtSecurityToken(issuer: "http://localhost:61939", audience: "http://localhost:61939", subject: claimsIdentity, notBefore: issuedAt, expires: expires, signingCredentials: signingCredentials); TokenGenerado tokenGenerado = new TokenGenerado { Username = username.ToUpper(), Expires = token.ValidTo, Token = tokenHandler.WriteToken(token) }; return(tokenGenerado); }
// POST: api/Login public IHttpActionResult Post([FromBody] Login login) { bool loginValido = false; //Verificar semo ligin veio preenchimentp e é vàlido if (login != null) { UsuarioRepo usuarioRepo = new UsuarioRepo(); Usuario usuario = usuarioRepo.ConsultarPorEmail(login.Usuario); if (usuario != null) { if (usuario.Senha == login.Senha) { loginValido = true; } else { return(Unauthorized()); } } } if (loginValido == true) { //se o login for válido gerar e retorna o token TokenGenerado token = createToken(login.Usuario); return(Ok(token)); } else { //if usuario e senha inválido, retorna não autorizado return(Unauthorized()); } }