public IActionResult Login(LoginViewModel dadosLogin) { try { Usuarios UsuarioBuscado = IUsuariosRepository.BuscarPorEmailSenha(dadosLogin); if (UsuarioBuscado == null) { return(NotFound()); } var claims = new[] { new Claim(JwtRegisteredClaimNames.Email, UsuarioBuscado.Email), new Claim(JwtRegisteredClaimNames.Jti, IFornecedoresRepository.BuscarPorIdUsuarioVinculado(UsuarioBuscado.UsuarioId).FornecedorId.ToString()) }; var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("autopecas-chave-autenticacao")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: "AutoPecas.WebApi", audience: "AutoPecas.WebApi", claims: claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: creds); return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public IActionResult Post(LoginViewModel login) { // Busca o usuário pelo e-mail e senha Usuario usuarioBuscado = _usuariosRepository.BuscarPorEmailSenha(login.Email, login.Senha); // Caso não encontre nenhum usuário com o e-mail e senha informados if (usuarioBuscado == null) { // Retorna NotFound com uma mensagem de erro return NotFound("E-mail ou senha inválidos"); } // Caso o usuário seja encontrado, prossegue para a criação do token /* Instalar as dependências: Criar e validar o jwt System.IdentityModel.Tokens.Jwt(5.5.0 ou superior) Integrar a parte de autenticação Microsoft.AspNetCore.Authentication.JwtBearer(2.1.1 ou compatível com o .Net Core do projeto) */ // Define os dados que serão fornecidos no token - Payload var claims = new[] { new Claim(JwtRegisteredClaimNames.Email, usuarioBuscado.Email), new Claim(JwtRegisteredClaimNames.Jti, usuarioBuscado.IdUsuario.ToString()), new Claim(ClaimTypes.Role, usuarioBuscado.IdTipoUsuario.ToString()) }; // Define a chave de acesso ao token var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("Senatur-chave-autenticacao")); // Define as credenciais do token - Header var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); // Gera o token var token = new JwtSecurityToken( issuer: "Gufi.WebApi", // emissor do token audience: "Gufi.WebApi", // destinatário do token claims: claims, // dados definidos acima expires: DateTime.Now.AddMinutes(30), // tempo de expiração signingCredentials: creds // credenciais do token ); // Retorna Ok com o token return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }); }
public IActionResult Login(LoginViewModel dadosLogin) { try { Usuarios UsuarioEncontrado = IUsuariosRepository.BuscarPorEmailSenha(dadosLogin); var claims = new[] { new Claim(JwtRegisteredClaimNames.Email, UsuarioEncontrado.Email), new Claim(JwtRegisteredClaimNames.Jti, UsuarioEncontrado.UsuarioId.ToString()), new Claim(ClaimTypes.Role, UsuarioEncontrado.Perfil) ,new Claim("String" , UsuarioEncontrado.Empresa) }; var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("shirtstore-chave-autenticação")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: "ShirtStore.WebApi", audience: "ShirtStore.WebApi", claims: claims, expires: DateTime.Now.AddMinutes(120), signingCredentials: creds ); return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }); } catch(Exception ex) { return BadRequest(ex.Message); } }