spring-boot - Spring Security 在 Authentication 上获取延迟加载的属性
问题描述
我是 Spring Security 的新手,我使用 Springboot、Mysql 来创建一个使用 jwt 进行身份验证的示例应用程序。但是,我注意到在登录请求时,当身份验证发生时,Spring 安全性正在检索所有延迟加载的属性(在我的情况下为角色,个人详细信息)。有什么方法可以让 Spring 安全知道忽略额外调用来获取 PersonalDetails。
应用属性
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
用户模型
public class User {
private Long id;
private String username;
private String password;
@OneToOne(fetch=FetchType.LAZY, mappedBy="user")
private PersonalDetails personalDetails;
@ManyToMany(fetch = FetchType.LAZY)
private Set<Role> roles = new HashSet<>();
// getters and setters
}
授权控制器
@PostMapping("/signin")
public ResponseEntity<?> signin(@Valid @RequestBody LoginRequest loginRequest) {
Authentication authentication =
authenticationManager
.authenticate(
new UsernamePasswordAuthenticationToken(
loginRequest.getUsernameOrEmail(),
loginRequest.getPassword()
)
);
SecurityContextHolder.getContext().setAuthentication(authentication);
String jwtToken = tokenProvider.generateToken(authentication);
return ResponseEntity.ok(new JwtResponse(jwtToken));
}
解决方案
推荐阅读
- java - 如何检查一个元素是否存在于另一个Arraylist中
- r - 求加权比例的标准误(调查数据)
- python - 在计算中使用大数时,Python Numba 模块给了我一个错误的答案
- java - 从 JSON 响应中检索所需的 JSON 对象
- python-3.x - 执行时 tkinter GUI 出错 --invalid command name "2025099205632update_values"
- css - 是否可以将 CSS 与 SharePoint Online 一起使用?
- python - 使用 Selenium 提取数据 - 如何定位元素?
- r - as.factor 无法将数值变量转换为分类变量
- r - 自动识别变量列中包含的“日期”一词并将条目更改为日期格式的功能(尽管存在异质性)
- javascript - 可访问性 - 分组复选框,其中一个复选框具有相关的文本区域