Estou seguindo com o curso (com pausa de 5 dias kkkk) e não está fazendo mais login no user que configuramos anteriormente, segue prints do código da ultima aula mais compilação da aplicação rodando (problema possivelmente da senha encriptada, eu acho), como resolver?PS: Não consigo subir imagem de um jeito facil pelo forum :(
{
"timestamp": "2023-07-07T07:23:00.751+00:00",
"status": 403,
"error": "Forbidden",
"message": "Access Denied",
"path": "/login"
}
//Retorno insomnia
//AuthController.java
package med.voll.api.controller;
import jakarta.validation.Valid;
import med.voll.api.domain.user.DataAuth;
import med.voll.api.domain.user.User;
import med.voll.api.infra.security.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/login")
public class AuthController {
@Autowired
private AuthenticationManager manager;
@Autowired
private TokenService tokenService;
@PostMapping
public ResponseEntity efetuarLogin(@RequestBody @Valid DataAuth dados) {
var token = new UsernamePasswordAuthenticationToken(dados.login(), dados.password());
var authentication = manager.authenticate(token);
return ResponseEntity.ok(tokenService.gerarToken((User) authentication.getPrincipal()));
}
}
//TokenService.java
package med.voll.api.infra.security;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTCreationException;
import med.voll.api.domain.user.User;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
@Service
public class TokenService {
public String gerarToken(User user) {
try {
var algorithm = Algorithm.HMAC256("12345678");
return JWT.create()
.withIssuer("API Voll.med")
.withSubject(user.getLogin())
.withClaim("id", user.getId())
.withExpiresAt(dataExpiracao())
.sign(algorithm);
} catch (JWTCreationException exception) {
throw new RuntimeException("Erro ao gerar token JWT", exception);
}
}
private Instant dataExpiracao() {
return LocalDateTime.now().plusHours(2).toInstant(ZoneOffset.of("-03:00"));
}
}
PS2: Como sobe imagem no forum? tem que fazer upload antes de fazer postagem? Apare3ce somente: "! [xx] (xx)"