【问题标题】:Spring Security Current User Session BeanSpring Security 当前用户会话 Bean
【发布时间】:2010-07-19 22:30:25
【问题描述】:

在处理 Spring Security 时,您通常是将当前用户存储到会话变量中,还是每次想要访问某些用户信息时都访问数据库?

目前我做了以下但似乎有点浪费:

public class CurrentUserService {
    private UserDAO userDAO;



    public CurrentUserService(UserDAO userDAO) {
        super();
        this.userDAO = userDAO;
    }

    public User getUser(){
        String username=SecurityContextHolder.getContext().getAuthentication().getName();
        return userDAO.findUser(username);
    }
}

【问题讨论】:

    标签: jsf spring-security


    【解决方案1】:

    Spring Security 将自动将经过身份验证的用户对象存储在会话中的默认配置中。安全过滤器链所做的第一件事是检查会话中是否存在有效的身份验证令牌,如果存在,则使用它填充SecurityContext 并跳过任何新的身份验证过滤器。您需要做的就是写下您的UserDetailsService,然后过滤器链应该会处理其余部分。

    【讨论】:

      【解决方案2】:

      请记住,要存储在会话中的用户对象不必与您从数据库中检索到的相同。通常可以接受的方法是将用户经常需要的详细信息存储在会话中,并仅针对访问频率较低的数据访问数据库。那么,在会话中存储哪些用户信息以及不存储哪些用户信息完全取决于应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-13
        • 2015-12-10
        • 2014-06-10
        • 2017-12-09
        • 2015-12-26
        • 2021-02-06
        • 2017-02-27
        • 2020-02-12
        相关资源
        最近更新 更多