【问题标题】:Logout through spring-security code通过spring-security代码注销
【发布时间】:2013-12-11 16:01:17
【问题描述】:

在我的 junit 中,我希望能够注销用户。

这是我的junit登录功能:

protected void loginPlayer(String loginName) {

System.out.println("Logging in player: " + loginName);
Player player = this.playerRepository.findPlayerByLoginName(loginName);
UserDetails playerSession = new PlayerSession(player.getId(), loginName, player.getPassword());
Authentication auth = new UsernamePasswordAuthenticationToken(playerSession, null, playerSession.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);
}

如何使用类似的方法实现注销?

【问题讨论】:

    标签: java spring junit spring-security


    【解决方案1】:

    根据SecurityContextHolder API,您应该可以调用 SecurityContextHolder.clearContext()

    【讨论】:

    • 清除所有会话?我只想清除特定的用户会话
    • 这会清除当前线程的安全上下文。由于 spring 安全身份验证是线程绑定的,这将使您在示例中显示的用户身份验证无效。
    【解决方案2】:
    SecurityContextHolder.getContext().setAuthentication(null);
    

    【讨论】:

    • 清除所有会话?我只想清除特定的用户会话
    猜你喜欢
    • 1970-01-01
    • 2017-11-05
    • 2020-04-02
    • 2017-04-22
    • 2012-10-09
    • 2018-09-02
    • 2011-06-28
    • 2016-07-12
    • 2011-07-19
    相关资源
    最近更新 更多