我正在做一个关于Spring Boot安全性的库管理系统项目。 为了根据角色计算已发行书籍的罚款,我希望在借书后使用当前用户角色。 当前用户名,角色book_id和fine将存储在其他表中。 我能够获得当前用户的用户名,但无法获得当前用户的角色。
有人可以帮我吗!
//控制器类的一部分
@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";
}
}
答案 0 :(得分:1)
您可以使用Authentication.getAuthorities()来获取当前登录用户的角色。
答案 1 :(得分:0)
您可以使用SecurityContextHolder或通过控制器上的注入Authentication对象获得授权。
通过SecurityContextHolder查找以下内容
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Collection<SimpleGrantedAuthority> list = (Collection<SimpleGrantedAuthority>) auth.getAuthorities();
for (SimpleGrantedAuthority permission : list) {
System.out.println(permission.getAuthority());
}
如果您需要有关登录用户的任何其他信息,则可以按以下方式访问UserDetails
User userDetails = (User) auth.getPrincipal();