【发布时间】:2017-11-17 09:16:55
【问题描述】:
我有一个自定义的 UserDetails 实现,它有一个购物车属性。
class MyUserDetails implement UserDetails {
private Cart cart;
// getters & setters + other properties....
}
我也希望匿名用户成为 MyUserDetails 的一个实例,到目前为止我已经让它工作,但所有匿名用户都有相同的购物车!
@Override
protected void configure(HttpSecurity http) throws Exception {
MyUserDetails anonymousUser = new MyUserDetails();
anonymousUser.setUsername("anonymousUser");
http.anonymous().principal(anonymousUser);
...
}
我如何能够为每个会话为匿名用户返回一个新的 MyUserDetails 实例?
【问题讨论】:
-
我想说的写法是在你的会话中有购物车。您的身份验证不需要购物车。
UserDetails应该只包含核心用户信息。 -
@dur 我认为购物车可能属于用户。例如,如果我希望注册用户的购物车在登录之间或不同设备之间持续存在。
-
当然是用户的一部分,但这并不意味着它应该是
UserDetails的一部分。您可以将购物车放入会话中或从数据库中加载它。这与UserDetails无关。
标签: java spring spring-mvc spring-boot spring-security