Я сейчас создаю приложение для электронной коммерции и пытаюсь добавить функцию «Добавить в корзину». Я еще не работал с httprequests, поэтому каждый должен войти в систему, прежде чем получить доступ к сайту.
Когда пользователь входит в систему, переходит на домашнюю страницу и пытается добавить продукт в корзину, он отправит сообщение Просьба добавить этот продукт.
@PostMapping("/cart/{id}")
public String addProduct(@PathVariable Long id, @ModelAttribute("cartItem") CartItems cartItem, Model model) {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
User user = ((User) principal);
Optional<Product> product = productService.findById(id);
cartItem.setProduct(product.get());
cartItem.setPrice(cartItem.getQuantity() * cartItem.getProduct().getPrice());
user.getCart().getCartItems().add(cartItem);
return "redirect:/cart";
}
Класс пользователя:
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "users")
public class User implements Serializable, UserDetails
{
private static final long serialVersionUID = -8903772563656397127L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long id;
@Column(name = "username")
private String username;
@Column(name = "email")
private String email;
@Column(name = "password")
private String password;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToOne(mappedBy = "user")
private Cart cart;
@Column(name = "address")
private String address;
ДЕТАЛИ ПОЛЬЗОВАТЕЛЯ:
@Override
@Transactional
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userService.findByUsername(username);
Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
grantedAuthorities.add(new SimpleGrantedAuthority("UNDEFINED"));
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), grantedAuthorities);
}
Проблема заключается в приведении класса пользователя к объекту субъекта из данных пользователя. Я получаю следующую ошибку:
java .lang.ClassCastException: класс org.springframework.security.core.userdetails.User не может быть приведен к классу com.nickjojo.ecomapp.entity.User (org. springframework.security.core.userdetails.User и com.nickjojo.ecomapp.entity.User находятся в безымянном модуле загрузчика 'app')