【问题标题】:500 XSRF token mismatch (null). Session may be expired500 XSRF 令牌不匹配(空)。会话可能已过期
【发布时间】:2014-06-27 18:05:23
【问题描述】:

我正在尝试调用其余 API 以在 POST 方法上使用 /api/v1/cart 创建购物车。我试过有和没有客户ID。但仍然面临错误。有配置吗??任何帮助都会很棒。 下面是jetty server的stackrace

HTTP 错误 500

访问 /api/v1/cart 时出现问题。原因:

 XSRF 令牌不匹配(空)。会话可能已过期。

原因:

org.broadleafcommerce.common.exception.ServiceException:XSRF 令牌不匹配(null)。会话可能已过期。 在 org.broadleafcommerce.common.security.service.ExploitProtectionServiceImpl.compareToken(ExploitProtectionServiceImpl.java:122) 在 org.broadleafcommerce.common.security.handler.CsrfFilter.doFilter(CsrfFilter.java:79) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 在 org.broadleafcommerce.common.web.filter.EstablishSessionFilter.doFilter(EstablishSessionFilter.java:43) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:180) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1302) 在 com.anvayin.webapp.CustomCORSFilter.doFilter(CustomCORSFilter.java:38) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1302) 在 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1302) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:448) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1067) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:377) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1001) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) 在 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) 在 org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 在 org.eclipse.jetty.server.Server.handle(Server.java:360) 在 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) 在 org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890) 在 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 在 org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:622) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) 在 java.lang.Thread.run(Thread.java:744)

--

谢谢, 斯内哈

【问题讨论】:

    标签: post broadleaf-commerce


    【解决方案1】:

    确保在您网站的web.xml 中,applicationContext-rest-api.xml 包含在patchConfigLocations 列表中上面 applicationContext-security.xml。对于以/api/ 开头的所有路径,applicationContext-rest-api.xml 不包括 blCsrfFilter:

    <!-- Set up Spring security for the RESTful API -->
    <sec:http pattern="/api/**" create-session="stateless">
        <sec:http-basic />
        <sec:custom-filter ref="blRestPreSecurityFilterChain" before="CHANNEL_FILTER"/>
        <sec:custom-filter ref="blRestCustomerStateFilter" after="REMEMBER_ME_FILTER"/>
        <sec:custom-filter ref="blRestPostSecurityFilterChain" after="SWITCH_USER_FILTER"/>
    </sec:http>
    

    如果您没有该部分,则 Spring Security 会将 blCsrfFilter 放入站点所需的安全过滤器链中,但应在 Rest API 中排除。来自 applicationContext-security.xml:

    <sec:http auto-config="false" authentication-manager-ref="blAuthenticationManager" disable-url-rewriting="true">
        <!-- We handle session fixation protection ourselves  -->
        <sec:session-management session-fixation-protection="none" />
    
       <!-- .................................. -->
       <!-- Other configuration excluded -->
       <!-- .................................. -->
    
        <!-- Specify our custom filters -->
        <sec:custom-filter ref="blPreSecurityFilterChain" before="CHANNEL_FILTER"/>
        <sec:custom-filter ref="blCsrfFilter" before="FORM_LOGIN_FILTER"/>
        <sec:custom-filter ref="blSessionFixationProtectionFilter" before="SESSION_MANAGEMENT_FILTER"/>
        <sec:custom-filter ref="blPostSecurityFilterChain" after="SWITCH_USER_FILTER"/>
    </sec:http>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-09
      • 2021-04-07
      • 2019-02-27
      • 1970-01-01
      • 2019-07-04
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多