如何在春季安全检查@PreAuthorize



我目前正在像这样检查权限。

@PreAuthorize("hasRole('ADMIN') or hasAuthority('GET_BOOK')")
@PostMapping("/find")
public Pagination<BookDTO> find(@Valid @RequestBody QueryCriteria queryCriteria) {
return bookService.find(queryCriteria);
}

但我不知道是否还有其他方法可以检查,我想检查一下方法。

@PostMapping("/find")
public Pagination<BookDTO> find(@Valid @RequestBody QueryCriteria queryCriteria) {
// Check PreAuthorize here
.....
return bookService.find(queryCriteria);
}

实体图示例:

  • 1:有一种写法:图像示例1
  • 2:另一个拼写是:图像示例2

谢谢!

检查授权毕竟不是一个好做法。但是你可以以下代码片段:

Object principal= SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal instanceof UserDetails) {
String username = ((UserDetails)principal).getUsername();
} else {
String username = principal.toString();
}

每次你需要手动操作时,都会在这里完成,这将是一项成本高昂的任务!!

以下是有关春季安全性的更多信息:https://spring.io/guides/topicals/spring-security-architecture

最新更新