我需要创建购物车。我有一个模型CartItem:
@Entity
@Table(name = "cart_items")
public class CartItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "tour_id")
private Tour tour;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@Column(name = "order_date")
private Date date=new Date();
//getters and setters
}
模型用户:
package com.zaitsava.springboot_touristsite.entity;
import javax.persistence.*;
import java.util.Set;
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "firstname")
private String firstname;
@Column(name = "lastname")
private String lastname;
@Column(name = "patronymic")
private String patronymic;
@Column(name = "email")
private String email;
@Column(name = "phone")
private String phone;
@Column(name = "password")
private String password;
@Column(name = "active")
private int active;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_role", joinColumns=@JoinColumn(name="user_id"),
inverseJoinColumns=@JoinColumn(name="role_id"))
private Set<Role> roles;
//gettes and setters
}
存储库:
public interface CartItemRepository extends JpaRepository<CartItem,Integer> {
public List<CartItem> findByUser(User user);
}
@Service
public class ShoppingCartService {
@Autowired
private CartItemRepository cartItemRepository;
public List<CartItem> cartItemList(User user){
return cartItemRepository.findByUser(user);
};}
现在我正在尝试获取用户并将其传递给查看:
@GetMapping("/cart")
public String showCart(Model model,@AuthenticationPrincipal User user){
//User user = (User) auth.getPrincipal(); try 2
//User user=(User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); try 3
if(user==null) System.out.println("User is null");
List<CartItem> cartItemList=cartService.cartItemList(user);
model.addAttribute("cartItems",cartItemList);
return "user/cart";
}
在第一种情况下,我得到空值,在情况2和3中:
JAVAlang.ClassCastException:类组织。springframework。安全果心用户详细信息。无法将用户强制转换为com类。扎伊萨瓦。springboot_旅游网站。实体用户(org.springframework.security.core.userdetails.User和com.zaitsava.springboot_touristsite.entity.User位于加载程序“app”的未命名模块中)-
我知道我应该注册AuthenticationPrincipalArgumentResolver,但如何在Spring Boot中注册呢?需要吗?
通过此错误的外观,我看到您正在尝试将org.springframework.security.core.userdetails.User类强制转换为com.zaitsava.springboot_touristsite.entity.User。您可能需要像下面这样明确声明类:
User user=(org.springframework.security.core.userdetails.User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
多谢了。
问题内容: 我正在使用Spring安全性版本3.1.4.RELEASE。如何访问当前登录的用户对象? 返回用户名,而不是用户对象。那么,如何使用返回的用户名并获得UserDetails对象? 我尝试了以下代码: 结果如下: AuthenticationFilter类如下: AuthenticationProvider如下: UserDetails类如下: 问题答案: 返回当前用户对象。可以是,也可
我使用的是Spring security版本3.1.4.RELEASE,如何访问当前登录的用户对象? 返回用户名,而不是用户对象。那么如何使用返回的用户名并获取UserDetails对象呢? 我尝试了以下代码: 结果如下: AuthentiationFilter类如下: 身份验证提供程序,如下所示: 用户详细信息类如下所示:
问题内容: 如何获得Oracle数据库的当前Connection对象?我在Spring 3.0.5中使用JDBC模块。 问题答案: 从bean中获取。 您可以通过使用Spring依赖项注入将数据源注入到bean中或通过静态访问来访问数据源:
我们创建了一个java web应用程序,一旦用户访问我的网站,它必须将登录id作为他的windows凭据登录id,但在我的情况下,托管我的网站后,它每次都返回服务器管理用户作为windows登录id。在java web应用程序中有没有方法获取当前的windows用户id。 如果我打开我的网站,它必须显示我的名字,如果有些人打开了那个网站,它必须显示他的名字。 谢谢
如何在MVC 5中获取当前登录用户的id?我尝试了StackOverflow建议,但它们似乎不适用于MVC 5 另外,MVC 5为用户分配资源的最佳实践是什么?(例如,