Clojure 使用CLJHTTP客户端自动登录

Clojure 使用CLJHTTP客户端自动登录,clojure,Clojure,我刚刚在自述页面上看到了这个库,其中包含这段代码,这正是我想要做的 (res/with-cookies {} (res/post "http://localhost:3000/login" {} {"user" user "password" password}) (res/get "http://localhost:3000/my-secret-page)) 但是,该库似乎已被弃用,它建议您改用cljhttp库。我只是想知道是否有人知道如何使用该库复制这种行为 目前我只是这样做 (p

我刚刚在自述页面上看到了这个库,其中包含这段代码,这正是我想要做的

(res/with-cookies {}
  (res/post "http://localhost:3000/login" {} {"user" user "password" password})
  (res/get "http://localhost:3000/my-secret-page))
但是,该库似乎已被弃用,它建议您改用
cljhttp
库。我只是想知道是否有人知道如何使用该库复制这种行为

目前我只是这样做

(post "<site i want to login to>" {:form-params {:username "<my username>" :password "<my password>"}})
(post”“{:表单参数{:用户名”“:密码”“})
它返回一个cookie,该cookie有一个http 302重定向到经过身份验证的页面,但我不知道如何使用经过身份验证的cookie使客户端遵循此重定向


任何帮助都将不胜感激

我想您需要明确使用库中的
follow redirect
函数。

供参考我解决了这个问题

(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.......
(当让[cookies(登录)”时http://my-site.com“我的用户”“我的通行证”)]
(客户端/获取)http://my-site.com/user-page“{:cookies}”)
=>你好,我的用户!