实现 Spring Security UserDetails 的 JPA 实体的含义是啥?

Posted

技术标签:

【中文标题】实现 Spring Security UserDetails 的 JPA 实体的含义是啥?【英文标题】:What are the implications of a JPA entity implementing Spring Security UserDetails?实现 Spring Security UserDetails 的 JPA 实体的含义是什么? 【发布时间】:2013-09-09 09:50:58 【问题描述】:

我有一个名为 Member 的 JPA 实体。我希望这个实体实现 Spring Security UserDetails实现一个自定义的基于 JPA 的 UserService

在此之前,我有几点需要整理:

Member 实体有很多属性。 Member 现在实现 UserDetails 并因此存储到 HttpSession 中(参见 HttpSessionSecurityContextRepository)这一事实会显着影响会话使用吗? 我可以通过调用SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 来检索当前登录的Member希望其所有属性在其他地方更新时保持正确同步

【问题讨论】:

【参考方案1】:
impact session usage significantly?

没有。

expect all its properties to remain synchronized properly when they are updated elsewhere?

不,你必须自己管理......,即当你在某个地方更新它时,确保你也更新内存中的实例:

Member member = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
member.setYourField(yourValue); //

【讨论】:

以上是关于实现 Spring Security UserDetails 的 JPA 实体的含义是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Grails Spring 应用程序中获取 LDAP 属性 memberof

springboot 使用数据库用户权限登录

Spring boot + Spring Security实现权限管理

spring security四种实现方式

Spring Security实现记住我功能

Spring security实现国际化问题