Criar uma Sessão em Java

2 respostas
H

Pessoal, eu estou com dificuldade para criar uma session em Java. Eu estou criando um api que cadastra chamados. Em resumo, eu tenho os Controladores UsuariosController e a ChamadosController. Em ChamadosController ele precisa receber o id do usuario que fez o login no sistema para ser associado ao chamado. Como eu posso criar uma sessão eu passar o id do usuario para a classe ChamadosController?

Segue as classes:

@Api(tags="Usuarios")
@RestController

@RequestMapping("/usuarios")

public class UsuariosController {
@Autowired
private UsuariosRepository usuariosRepository;
private BCryptPasswordEncoder bCryptPasswordEncoder;
public UsuariosController(UsuariosRepository usuariosRepository, BCryptPasswordEncoder bCryptPasswordEncoder)
{
	this.usuariosRepository = usuariosRepository;
	this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}

@ApiResponses(value = {
		@ApiResponse(code = 200, message = "Retorna a lista de usuarios"),
		@ApiResponse(code = 403, message = "Você não tem permissão para acessar este recurso"),
	})
@ApiOperation(value = "", authorizations = { @Authorization(value = "jwtToken") })
@RequestMapping(method=RequestMethod.GET, value="/cadastrados")
public @ResponseBody List<Usuarios> listausuarios() {
	return usuariosRepository.findAll();
}

@PostMapping("/cadastro")
public void signUp(@RequestBody Usuarios usuarios, HttpSession session)
{
	usuarios.setSenha(bCryptPasswordEncoder.encode(usuarios.getSenha()));
	usuariosRepository.save(usuarios);
	
	session.setAttribute("usuario", new Usuarios().getId());
	
}



    @RestController
   @RequestMapping("/chamados")
  public class ChamadosController {

@Autowired
private ChamadosService chamadosService;

@ApiOperation(value = "", authorizations = { @Authorization(value = "jwtToken") })
@GetMapping(value = "/{chamadoId}")
public ResponseEntity<Chamados> findById(@PathVariable Long chamadoId) {
	Chamados obj = chamadosService.findById(chamadoId);
	return ResponseEntity.ok().body(obj);
}

@ApiOperation(value = "", authorizations = { @Authorization(value = "jwtToken") })
@PostMapping("/{userId}/{problemId}")
public ResponseEntity<Chamados> cadastrarChamado(@PathVariable("userId") Long userId, @PathVariable("problemId") Long problemId,
		@RequestParam("file") MultipartFile file, @RequestParam("descricaoProblema") String descricaoProblema,
		@RequestParam("dataCriacao") String dataCriacao) {
	
	Chamados obj = chamadosService.salvarDados(userId, problemId, file, descricaoProblema, dataCriacao);
	
	URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{chamadoId}")
			.buildAndExpand(obj.getId()).toUri();
	return ResponseEntity.created(uri).build();
}

@ApiOperation(value = "", authorizations = { @Authorization(value = "jwtToken") })
@GetMapping
public ResponseEntity<List<Chamados>> ListaDeChamados() {
	List<Chamados> list = chamadosService.lista();
	return ResponseEntity.ok().body(list);
}

@ApiOperation(value = "", authorizations = { @Authorization(value = "jwtToken") })
@GetMapping("/baixarAnexo/{chamadoId}")
public ResponseEntity<ByteArrayResource> downloadFile(@PathVariable Long chamadoId){
	Chamados chamado = chamadosService.getFile(chamadoId).get();
	return ResponseEntity.ok()
			.contentType(MediaType.parseMediaType(chamado.getTipoAnexo()))
			.header(HttpHeaders.CONTENT_DISPOSITION,"attachment:filename=\""+chamado.getNomeAnexo()+"\"")
			.body(new ByteArrayResource(chamado.getAnexo()));
}

}

2 Respostas

BlackDog

Amigo, você já está usando jwt certo? Porque você não inclui o id dele no jwt e faz o decode dele e no momento que você inicar o processo?

H

@BlackDog se eu fosse usar uma sessão, você sabe como eu poderia obter o id do usuário? Eu sou iniciante. Eu estou aprendendo java web.

Criado 25 de fevereiro de 2021
Ultima resposta 25 de fev. de 2021
Respostas 2
Participantes 2