我想使用以下代码手动绕过 spring Security 的用户:
User localeUser = new User();
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(localeUser ,null, localeUser .getAuthorities());
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(auth);
// Create a new session and add the security context.
HttpSession session = request.getSession(true);
session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
return "dummyLogin";
虚拟登录页面(由 tiles 处理)在同一控制器中内部调用不同的请求映射,我试图在该控制器中获取类似这样的身份验证。
SecurityContextHolder.getContext().getAuthentication()
我在哪里得到空?
原文由 Rajesh Wadhwa 发布,翻译遵循 CC BY-SA 4.0 许可协议
所以,我找到了真正的问题!问题是我在 security-context.xml 中用 security=“none” 标记了整个控制器。因此,当它从第一个链接跳转到第二个链接时,它没有传递任何安全上下文!!抱歉给您带来麻烦,伙计们。