1
resposta

Seções

Como o Spring Security faz o gerenciamento das seções dos dados associados a um único usuários, por exemplo, como configuro, que um usuário tenha acesso a informações relacionadas a ele, por exemplo nos sites de venda temos os carrinhos, como é vinculado esses produtos a um usuário.

Eu achei essa explicação:

@Controller
public class ShoppingCartController {

@GetMapping("/carrinho")
public String showCart(Model model, Principal principal) {
    User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    // Recupere o carrinho de compras do usuário
    Cart cart = cartService.getCartForUser(user);
    model.addAttribute("cart", cart);
    return "carrinho";
}
}

Existe alguma maneira mais fácil?

1 resposta

Oi Wellington! Tudo bem?

Em geral, configuramos um relacionamento entre usuário e a classe com os dados dele (como você fez com carrinho de compras), e aí para recuperar o usuário logado podemos utilizar essa estratégia que você colocou ou usar a anotação @AuthenticationPrincipal no controller. O código com a anotação ficaria assim:

@Controller
public class ShoppingCartController {

@GetMapping("/carrinho")
public String showCart(Model model, @AuthenticationPrincipal Usuario principal) {
    // Recupere o carrinho de compras do usuário
    Cart cart = cartService.getCartForUser(usuario);
    model.addAttribute("cart", cart);
    return "carrinho";
}
}

No próximo curso dessa formação, vamos explorar um pouco mais essa parte de recuperar informações únicas de cada usuário, utilizando essa anotação. Ele vai ser publicado em breve ;)