I have a question .. I've implemented a login validation using JWT. It works fine, it generates the token within the requests. However, in the login page, if in the URL I put the next page the system lets go.
Login COntroller
@RestController
public class LoginController {
@Autowired
private EntidadesAdministradoresService eaService;
@RequestMapping(value = "/autenticar", consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
public LoginResponse autenticar(@RequestBody Entidades_administradores entidadesAdministradores) throws ServletException {
//verifica se foram digitados o login e senha no front end
if (entidadesAdministradores.getUsuario_administrador() == null
|| entidadesAdministradores.getSenha_administrador() == null) {
throw new ServletException("Nome ou senha obrigatório");
}
// busca no banco de dados
Entidades_administradores entAdministradoresAutenticado = eaService
.buscarPorNome(entidadesAdministradores.getUsuario_administrador());
if (entAdministradoresAutenticado == null) {
throw new ServletException("Usuário não encontrado");
}
// compara a senha vinda do banco de dados com a senha vinda da tela
if (!entAdministradoresAutenticado.getSenha_administrador()
.equals(entidadesAdministradores.getSenha_administrador())) {
throw new ServletException(" Senha inválida");
}
String token = Jwts.builder().setSubject(entAdministradoresAutenticado.getUsuario_administrador())
.signWith(SignatureAlgorithm.HS512, "digi2fred")
.setExpiration(new Date(System.currentTimeMillis() + 1 * 60 * 1000)).compact();
return new LoginResponse(token);
}
private class LoginResponse {
public String token;
public LoginResponse(String token) {
this.token = token;
}
public String getToken() {
return token;
}
}
}
RequestMapping
public class HomeController {
@RequestMapping("/home")
public String irParaHome(){
return "home";
}
@RequestMapping("/login")
public String irParaLogin(){
return "login";
}
@RequestMapping("/escolherSistema")
public String irParaEscolherSistema(){
return "escolherSistema";
}
@RequestMapping("/inicio")
public String irParainicio(){
return "inicio";
}
@RequestMapping("/saude")
public String irParaSaude(){
return "saude";
}
@RequestMapping("/localTrabalho")
public String irParalocalTrabalho(){
return "localTrabalho";
}
}
LoginCOntroller.js
app.controller("loginController", function($scope, $http, $location) {
$scope.entidadesAdministradores = {};
$scope.token = "";
$scope.autenticar = function() {
$http.post("/autenticar", $scope.entidadesAdministradores).then(
function(response) {
$scope.token = response.data.token;
localStorage.setItem("userToken", response.data.token);
$location.path("/home"); // alterei
window.location.reload(true); // alterei
},
function(response) {
console.log(response);
});
};
});