Java 如何获取当前用户权限/角色,并根据spring security中的角色进行一些计算

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

我正在做一个关于SpringBoot安全中的库管理系统的项目。 为了根据角色计算已发行图书的罚款,我在借书后调用了当前用户角色。 当前用户名、角色簿id和罚款将存储在其他表中。 我可以获取当前用户的用户名,但无法获取当前用户的角色

有人能帮帮我吗

//控制器类的一部分

 @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();