【问题标题】:how to view spring csrf token in filter如何在过滤器中查看spring csrf令牌
【发布时间】:2018-01-16 16:27:57
【问题描述】:

我使用的是 spring mvc 4.3 版本。我们使用的是默认的 spring csrf。在其中一种情况下,我收到无效令牌错误,但我看到无论我得到什么相同的令牌都已发送到服务器。有什么方法可以让我将日志消息放入查看服务器响应以查看生成的 csrf 令牌。在 UI JSP 页面上我正在使用标记,在页面视图源中我可以看到令牌。但我想在服务器端的过滤器中查看,以确保我的页面上没有其他令牌丢失。

我的页面上有两个标签。每当我更改标签时,我都会遇到此令牌无效问题。您能否帮助我如何在我的自定义过滤器中访问此令牌详细信息。

我尝试了这样的 AOP,需要做任何更改吗?

@Aspect 公共类 AfterGenerateCsrfTockenAspect {

protected transient ITSLogger logger = LogManager.getLogger(this.getClass().getName());
@AfterReturning( 
        pointcut = "org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.generateToken(..)",
        returning = "result"
    )
    public void logGeneratedCsrfToken(Object result) {
        logger.debug("CSRF token was generated.  :::: " + result);
    }

}

【问题讨论】:

    标签: spring spring-mvc csrf spring-aop


    【解决方案1】:

    有什么方法可以让我输入日志消息以查看服务器响应以查看生成的 csrf 令牌

    是的,AOP 来拯救。例如,您可以在每次生成令牌时记录令牌:

    @Aspect
    @Slf4j // lombok for logging
    public class AfterGenerateCsrfTockenAspect {
        @AfterReturning( // use here FQDN of your Token generator method
            pointcut = "org.springframework.security.web.csrf.CookieCsrfTokenRepository.generateToken(..)",
            returning = "result"
        )
        public void logGeneratedCsrfToken(Object result) {
            log.info("CSRF token '{}' was generated.", result);
        }
    }
    

    【讨论】:

    • 嗨,马克西姆,我是 AOP 的新手。你能告诉我在我的spring mvc流程中将上面的代码保存在哪里吗?我需要更改此代码 sn-p 中的任何内容吗?
    • 我在问题部分尝试了 AOP 方法,但它没有给我任何数据
    【解决方案2】:

    默认情况下,spring 将 csrf 令牌存储在会话中。我们可以从会话属性中访问 c​​srf 令牌

    String key ="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN"
    HttpSession session = request.getSession(true);
    CsrfToken token =(CsrfToken) session.getAttribute(key);
    

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 2018-03-02
      • 2015-05-22
      • 2017-04-06
      • 2015-05-10
      • 2020-08-08
      • 2014-12-06
      • 2015-04-17
      • 2016-10-29
      相关资源
      最近更新 更多