Я разрабатываю приложение для корзины покупок с spring-boot.i есть Cart, CartItem, Product сущностей. Я написал такой код для добавления cartItem в корзину
public String addToCart(@PathVariable Long productId, Authentication authentication, HttpSession session)
{
Product product = productService.findById(productId);
Cart cart;
List<CartItem> cartItems;
CartItem cartItem;
Optional<Authentication> auth = Optional.ofNullable(authentication);
if (auth.isPresent()){
cart = ((CustomPrincipal) authentication.getPrincipal()).getUser().getCart();
cartItems = cart.getCartItems();
cartItem = cartService.addCartItem(cart,cartItems,product);
cartItemService.Save(cartItem);
cart.setTotalPrice(cartService.getTotalPrice(cart));
cartService.Save(cart);
}else{
cart = session.getAttribute("cart") == null ? new Cart()
: (Cart)session.getAttribute("cart");
cartItems = cart.getCartItems();
cartItem = cartService.addCartItem(cart,cartItems,product);
if (!cart.getCartItems().contains(cartItem)) cart.addItem(cartItem);
cart.setTotalPrice(cartService.getTotalPrice(cart));
}
session.setAttribute("cart",cart);
session.setAttribute("cartItemsQuantity",cartItemService.sumQuantity(cartItems));
return "redirect:/magaza";
}
И мой дисплей Код корзины
Optional<Authentication> auth = Optional.ofNullable(authentication);
Cart cart;
if (auth.isPresent()){
cart = ((CustomPrincipal) authentication.getPrincipal()).getUser().getCart();
}else{
cart = session.getAttribute("cart") == null ? new Cart()
: (Cart)session.getAttribute("cart");
}
model.addAttribute("cart",cart);
return "cart";
Как видите, я проверяю аутентификацию в обоих методах. Есть ли в Spring фильтр или обработчик для установки сеанса