在我的应用程序中,当用户更新其用户名时,我想从安全上下文中清除该身份验证,因为在基本身份验证调用中使用了旧用户名 .

在我的控制器中进行更新,这很容易

SecurityContextHolder.getContext().setAuthentication(null);

但我正在寻找一种方法来访问当前的安全上下文而不使用静态方法来简化单元测试(更不用说静态调用看起来不是很“弹性”) .

answer here看起来非常接近于我希望有一种方法可以在不编写包装类的情况下实现这一点 . 我还尝试将SecurityContextHolderStrategy注入到我的控制器构造函数中(正如我可能在该答案和相关的jira中所暗示的那样)并且没有定义该类型的bean .

那么:有没有办法在不使用SecurityContextHolder静态方法的情况下访问Spring Controller中的当前SecurityContext?

我的 Spring 季安全版本是3.2.5.RELEASE .