如何在Spring Controller中获取_csrf对象(?!)?我已经配置了Spring Security,可以在jsp文件中获得$ {_ csrf}请求属性。
我试过了:
CsrfToken _csrf = (CsrfToken) session.getAttribute("CsrfToken");
CsrfToken _csrf = (CsrfToken) session.getAttribute("_csrf");
结果为空;
提前致谢!
最佳答案
在调试中,我看到了一个带有键“org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN”的会话属性。我查看了HttpSessionCsrfTokenRepository类。它具有一种从传入的HttpServletRequest对象加载令牌的方法。
最后,这对我有用:
CsrfToken token = new HttpSessionCsrfTokenRepository().loadToken(request);
如果有人向我解释了它的工作原理,我将不胜感激。