首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用clj-http客户端自动登录

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

Stack Overflow用户
提问于 2011-12-31 05:33:47
回答 2查看 1.3K关注 0票数 2

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

代码语言:javascript
复制
(res/with-cookies {}
  (res/post "http://localhost:3000/login" {} {"user" user "password" password})
  (res/get "http://localhost:3000/my-secret-page))

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

目前我只是在做

代码语言:javascript
复制
(post "<site i want to login to>" {:form-params {:username "<my username>" :password "<my password>"}})

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

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-01 05:38:44

仅供参考我解决了这个问题,

代码语言:javascript
复制
(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映射,然后可以在访问需要您登录的页面时在后续请求中使用该映射,例如

代码语言:javascript
复制
(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.......
票数 4
EN

Stack Overflow用户

发布于 2011-12-31 20:17:30

我猜你需要显式地使用库中的follow-redirect函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8684300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档