Enviar um token para o navegador - SpringBoot

este é meu conttroler que gera o token na authenticação,mas o token só é gerado no postmam
gostaria de saber como envio ele para ser preenchido no navegador…desde já agradeço.

@PostMapping("/login")
public ResponseEntity<Token> logar(@Valid @RequestBody ClienteDTO usuario) {
	Token token = clienteService.gerarToken(usuario);
	if (token != null) {

	
	return ResponseEntity.ok(token);
		

	}

	return ResponseEntity.status(403).build();
	

	 
	  
}

meu contoller está assim.Eu consigo enviar uma sessão mas não estou conseguindo enviar o token para o localstorage…alguém pode me ajudar?

@PostMapping(“/login”)
public ResponseEntity logar(@Valid @RequestBody ClienteDTO usuario,HttpSession session){

	String token = clienteService.gerarToken(usuario);
	
	if (token != null) {
	
                   //cria  umJSESSIONID
		session.setAttribute("Authorization", token);
	
            return ResponseEntity.ok(token);



	}

	return ResponseEntity.status(403).build();
	

	 
	  
}

Já tentei com Headrs,Models e nada…Alguém pode me ajudar!

Não dá para adicionar coisas ao localStorage pelo backend.

Vc precisa de JavaScript para fazer isso.

No seu front, vc vai ter um código JS que vai enviar uma requisição para seu back, pegar a resposta e adicioná-la ao localStorage.

Entendi.Mas eu conseguiria levar uma String para um input ou uma div do html?
Eu sei como fazer isso com o angular mais para isso teria que construir Módulos e traçar rotas de endpoint, oque não queria fazer.Sabe pelo menos como posso levar para uma página html porque de lá eu consigo inserir no localstorage.VLW!!!

Não consigo te falar muito porque eu não conheço seu projeto.

Tem como vc mostrar o código do Angular que tá enviando esta requisição para /login?

então, eu não estou usando angular.Estou tentando lançar uma string na página html através de um model mas não estou conseguindo.

É, sem informação eu realmente não consigo ajudar.

O que eu sei é que seu método está retornando um ResponseEntity, mas parece que não bem o que vc quer, acho que o que vc tá querendo é que ele retorne um ModelAndView ou algo assim.

eu recebo um método gerar token() , se existir usuario um token é gerado , sendo que quero enviar este token para página html.

um model é possivel,mas não estou conseguindo…não sei oque está acontecendo!!!

Posso ver este método?

Esse é o método que gera o token se a autenticação for bem sussedida:

public String gerarToken( ClienteDTO usuario){

	Cliente user = ClienteRepository.getByEmail(usuario.getNome(), usuario.getEmail());
	
	if (user != null) {
		
	
		Boolean valid = passwordEncoder.matches(usuario.getPassWord(), user.getPassword());
	
		if (valid) {
			
			logger.info("Cliente :" +" gerando token para "+ usuario.getNome());
			logger.info("TOKEN : "+ TokenUtil.createToken(user).replace("Bearer ",""));
		
							  
			ClienteRepository.saveToken(TokenUtil.createToken(user),user.getPassword());
		
		
			return new String(TokenUtil.createToken(user));
			
			
			
		}
	}
	

	return null;
}

Eu preciso capturar esse [token] e lançar no .html ou no .js pois de lá consigo acessar o localstorage!

String token = clienteService.gerarToken(usuario);

Me desculpa, eu me confundi. Agora que reli que vi que vc não está usando Angular.

Outra coisa que percebi relendo é que vc está fazendo errado neste trecho:

session.setAttribute("Authorization", token);

O “Authorization” deve ser enviado na resposta como um header e não armazenado na sessão.


Bom, ao que me parece, se trabalho no backend acabou. Agora vc tem que ir pro front e construir seu HTML.

No HTML, no JS, vc faria algo assim:

fetch('http://localhost:8080/login', {
  body: {
    username: 'xxx',
    password: 'yyy',
  },
  method: 'POST',
})
  .then((response) => response.text())
  .then((token) => localStorage.setItem('token', token));

Claro que é só um exemplo, pois vc precisa construir seu formulário certinho e tudo.

Obrigado amigo.Consegui enviar o header:

			HttpHeaders headers = new HttpHeaders();
			headers.add("Authorization",token);

mais aconteceu um inesperado…
o token acho que não foi recebido para autenticação!!!

quando eu envio pelo insominia eu consigo passar no filtro!!!

Deve ser configuração errada do Spring Security.