Java 如何获取当前用户权限/角色,并根据spring security中的角色进行一些计算
我正在做一个关于SpringBoot安全中的库管理系统的项目。 为了根据角色计算已发行图书的罚款,我在借书后调用了当前用户角色。 当前用户名、角色簿id和罚款将存储在其他表中。 我可以获取当前用户的用户名,但无法获取当前用户的角色 有人能帮帮我吗 //控制器类的一部分Java 如何获取当前用户权限/角色,并根据spring security中的角色进行一些计算,java,spring-boot,spring-security,Java,Spring Boot,Spring Security,我正在做一个关于SpringBoot安全中的库管理系统的项目。 为了根据角色计算已发行图书的罚款,我在借书后调用了当前用户角色。 当前用户名、角色簿id和罚款将存储在其他表中。 我可以获取当前用户的用户名,但无法获取当前用户的角色 有人能帮帮我吗 //控制器类的一部分 @RequestMapping("/homepage/borrowBook") public String addBookings(Bookings bk, HttpServletRequest rqst
@RequestMapping("/homepage/borrowBook")
public String addBookings(Bookings bk, HttpServletRequest rqst) {
rqst.setAttribute("mode", "MODE_BORROW");
return "homepage";
}
@PostMapping("/homepage/save-borrow")
public String saveBorrow(Bookings bk, HttpServletRequest rqst, Authentication auth) {
rqst.setAttribute("mode", "MODE_BORROW");
if (BookRepo.exists(bk.getBook_id())) {
bk.setUser(auth.getName());
/////here i want the current user authority to be saved/checked.
bookingsRepo.save(bk);
return "homepage";
} else {
rqst.setAttribute("error", "Book doesn't exist");
return "homepage";
}
}
您可以使用获取当前登录用户的角色。您可以使用SecurityContextHolder或通过控制器上的注入身份验证对象获取权限 通过SecurityContextHolder查找以下内容
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<SimpleGrantedAuthority> list = (Collection<SimpleGrantedAuthority>) auth.getAuthorities();
for (SimpleGrantedAuthority permission : list) {
System.out.println(permission.getAuthority());
}
User userDetails = (User) auth.getPrincipal();