Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure Can';t使用环重新加载时设置CSRF令牌_Clojure_Csrf_Clojurescript_Ring - Fatal编程技术网

Clojure Can';t使用环重新加载时设置CSRF令牌

Clojure Can';t使用环重新加载时设置CSRF令牌,clojure,csrf,clojurescript,ring,Clojure,Csrf,Clojurescript,Ring,当前正在使用Ring为POST请求设置CSRF令牌。我一直在遵循这个问题的答案作为指导。 遵循本指南之后,我能够成功地获得csrf令牌并使用curl发送POST请求。但是,我只能以不使用(包装重新加载)我的应用程序处理程序为代价来实现这一点 本指南将此代码用于应用程序处理程序 (def app (-> routes (wrap-defaults site-defaults) (wrap-session))) 但是,为了使用动态重载,我需要在开发期间使用(wra

当前正在使用Ring为POST请求设置CSRF令牌。我一直在遵循这个问题的答案作为指导。 遵循本指南之后,我能够成功地获得csrf令牌并使用curl发送POST请求。但是,我只能以不使用(包装重新加载)我的应用程序处理程序为代价来实现这一点

本指南将此代码用于应用程序处理程序

(def app
  (-> routes
      (wrap-defaults site-defaults)
      (wrap-session)))
但是,为了使用动态重载,我需要在开发期间使用(wrap-reload)函数。这样,

(def app
   (-> routes
       (wrap-defaults site-defaults)
       (wrap-session)
       (wrap-exception)
       (wrap-reload)))
我很确定这与我在上面链接的问题的答案中的评论所解决的问题有关。在设置中间件默认值时,出现了一个错误,导致了冗余行为


我是否仍然可以使用wrap-reload来获取有效的CSRF令牌?

没有足够的信息来提供问题所在的具体细节。不过,一些一般性提示可能有用

关于在上的figwheel站点上运行可重新加载的代码,有一个有用的描述。虽然本描述是关于编写可重新加载的clojurescript,但主体同样适用于服务器端

自动重新加载可能导致您的防伪令牌出现问题的原因可能是会话存储在“def”中,而不是defonce中。这意味着当存储会话的文件被重新加载时,会话数据将丢失,这可能意味着csrf令牌也将丢失/替换为新值


也值得一看luminus模板。它还使用了环默认值,并且很好地处理了csrf令牌。事实上,它使用了selmar模板,该模板已经扩展到包含csrf令牌,这使得修改和设置jsvar来保存令牌变得非常简单,因此将令牌与ajax post请求一起使用非常简单。它还可以与自动重新加载一起正常工作

您的后端在JVM上运行,该代码正在设置环服务器,您可以使用lein run启动它。Figwheel设置clojurescript的自动编译。你的应用程序应该提供html,然后调用figwheel的输出,它们是独立的进程,不应该冲突。我建议你发布一个链接到一个最小的工作示例,否则你的问题就很模糊了。好吧,我理解你关于figwheel和戒指重新加载是如何分开的过程的观点。我想我应该问一下如何使用ring的重新加载功能并获得正确的CSRF令牌。获取CSRF令牌的最简单的工作示例是我发布的链接。但是它没有环的重新加载。
wrap-reload
对发布请求没有任何作用,请看你能给github举个例子并给出一个链接吗?编辑了我的问题,更多地关注环的重新加载和CSRF令牌,而不是figwheel或POST请求。但是,这个bug确实阻止我使用POST请求和ring,因为它需要CSRF令牌。此时,我正在考虑手动设置开发令牌。我可以确认您应该能够毫无问题地完成此操作。我在figwheel中使用了它,并在头中使用CSRF令牌对服务器进行了jason回调,并且使用了重新加载中间件,没有任何问题。我认为figwheel与此无关,除非您以某种方式将CSRF令牌存储在客户端的def中,在这种情况下,您需要使用defonce替换def,以便figwheel重新加载客户端clojurescript时不会丢失。没有足够的细节来更具体。Luminus模板很有用