Spring Security OAuth2 - 存储的身份验证对象
Spring Security OAuth2 - stored authentication object
我目前使用的是 Spring Security Oauth2 2.0.7.RELEASE 和 JdbcTokenStore
的相当普通的设置,最近遇到了一个有趣的问题。
我了解在创建和存储访问令牌时,Authentication
对象被序列化并持久保存到数据库中。我知道这是必要的,并在稍后在请求中使用访问令牌时使用。问题是我的 Authentication
对象(Spring Security 的 UserDetails 接口的自定义实现)与我的应用程序域中的其他对象相关联。 (示例对象图可能看起来像 Authentication -> com.myapp.User -> com.myapp.PhoneNumber)
我不得不对对象的实现进行一些更改,并注意到 Authentication
在我更改之前序列化并存储到数据库的对象不再反序列化,这是有道理的,因为我的对象模型已经更改.
管理这种情况的推荐方法是什么?有没有办法让 Authentication
对象序列化为 JSON 而不是二进制?我倾向于从 Authentication
对象中删除我的自定义信息,但想知道是否有更好的方法?
关闭循环 - 我最终使用的方法是扩展 JdbcTokenStore
并覆盖方法 serializeAuthentication
和 deserializeAuthentication
以使用 Jackson 执行序列化/反序列化。然后在我的对象模型中,我 @JsonIgnore
了在验证用户时并不真正需要的实体。
我目前使用的是 Spring Security Oauth2 2.0.7.RELEASE 和 JdbcTokenStore
的相当普通的设置,最近遇到了一个有趣的问题。
我了解在创建和存储访问令牌时,Authentication
对象被序列化并持久保存到数据库中。我知道这是必要的,并在稍后在请求中使用访问令牌时使用。问题是我的 Authentication
对象(Spring Security 的 UserDetails 接口的自定义实现)与我的应用程序域中的其他对象相关联。 (示例对象图可能看起来像 Authentication -> com.myapp.User -> com.myapp.PhoneNumber)
我不得不对对象的实现进行一些更改,并注意到 Authentication
在我更改之前序列化并存储到数据库的对象不再反序列化,这是有道理的,因为我的对象模型已经更改.
管理这种情况的推荐方法是什么?有没有办法让 Authentication
对象序列化为 JSON 而不是二进制?我倾向于从 Authentication
对象中删除我的自定义信息,但想知道是否有更好的方法?
关闭循环 - 我最终使用的方法是扩展 JdbcTokenStore
并覆盖方法 serializeAuthentication
和 deserializeAuthentication
以使用 Jackson 执行序列化/反序列化。然后在我的对象模型中,我 @JsonIgnore
了在验证用户时并不真正需要的实体。