clojure - 使用clj-http客户端自动登录

标签 clojure

我刚刚看到这个库 https://github.com/technomancy/clojure-http-client在自述文件页面上使用这段代码,这就是我想要做的

(res/with-cookies {}
  (res/post "http://localhost:3000/login" {} {"user" user "password" password})
  (res/get "http://localhost:3000/my-secret-page))

但是,该库似乎已被弃用,建议您改用 clj-http 库。我只是想知道是否有人知道如何使用该库复制这种行为?

目前我只是这样做

(post "<site i want to login to>" {:form-params {:username "<my username>" :password "<my password>"}})

它返回一个具有 http 302 重定向到经过身份验证的页面的 cookie,但我不知道如何使客户端使用经过身份验证的 cookie 遵循此重定向

如有任何帮助,我们将不胜感激。

最佳答案

仅供引用,我解决了这个问题,

(defn login [login-url user pass]
  (let [result (client/post "http://my-site.com/login" {:form-params {:username user :password pass}})]
    (when (= (:status result) 302)
      (:cookies result))))

如果登录成功,它将返回一个 cookie 映射,然后可以在访问需要登录的页面时在后续请求中使用该映射,例如

(when-let [cookies (login "http://my-site.com" "my-user" "my-pass")]
  (client/get "http://my-site.com/user-page" { :cookies cookies }))
 => <html><head><title>Hello my-user!</titl.......

关于clojure - 使用clj-http客户端自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684300/

相关文章:

java - 如何使用 Clojure 的 gen-class 创建多个 Java 成员变量

Scala 和 Clojure 都在一个项目中

clojure - 如何确定clojure中nil的含义?

java - 从 Clojure 中的集合( map 列表)中获取偶数/奇数索引元素

clojure - leinigen 中的类路径问题

clojure - 使用 doseq 和 into 从 let 返回一个数组

clojure - 显示为文本字段的 Reagent-Forms 单选按钮

clojure - 在 clojure 中连接/合并单个向量中的向量

clojure - Lisp-1 和 Lisp-2 有什么区别?

java - 在 Clojure 中使用索引保留有状态查找表的惯用方式