首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:凭证-fn不被朋友/认证中间件调用?

:凭证-fn不被朋友/认证中间件调用?
EN

Stack Overflow用户
提问于 2014-01-25 16:24:56
回答 2查看 292关注 0票数 2

我正在尝试将朋友鲁米努斯 (基本上是利伯-黑尔)结合使用,并且我发现根本没有调用我的:credential-fn。一开始,我想可能是我添加了中间件错误,但我尝试设置一个自定义:login-failure-handler来查看至少这样做是否有效。

下面是我的应用程序的样子:

代码语言:javascript
复制
(defroutes my-routes
  (GET "/login" [login_failed username]
       (login-page login_failed username))  ;; login-page just renders HTML form
  (GET "/logout" req
       (friend/logout* (resp/redirect (str (:context req) "/")))))

(defn login-failure-handler [req]
  (println "Failed")  ;; <-- get's printed and redirects no problem
  (redirect "/login?failed=Y"))

(defn credential-fn [creds-map]
  (println creds-map)  ;; <-- doesn't get printed at all
  {:identity "test" :roles [::user]})

;; define custom wrapping middleware as noir's middleware/app-handler does
;; its own thing with routes + middleware
(defn authenticate [handler]
  (friend/authenticate
    handler
    {:workflows [(workflows/interactive-form
                   :credential-fn credential-fn
                   :login-failure-handler login-failure-handler)]}))

(defn debugger [handler]
  (fn [req]
    (println req)
    (handler req)))

(def app (middleware/app-handler
          ;; add your application routes here
          [my-routes]

          ;; add custom middleware here
          :middleware [debugger authenticate]

          ;; add access rules here
          :access-rules []

          ;; serialize/deserialize the following data formats
          ;; available formats:
          ;; :json :json-kw :yaml :yaml-kw :edn :yaml-in-html
          :formats [:json-kw :edn]))

我还添加了一个debugger中间件,它只打印出请求地图,我注意到当我单击登录表单的submit按钮(即没有发生POST请求)时,它根本不打印任何东西。它会立即打印出到达login-failure-handler的信息。

我错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-26 01:14:29

结果我的登录表格不正确。朋友特别期望来自POST请求的两个表单params,usernamepassword。因此,登录表单需要有这两个字段。似乎没有办法在朋友这边定制这些字段,我认为这是一个缺陷。

票数 2
EN

Stack Overflow用户

发布于 2014-01-25 20:22:36

您需要像这样将您的credential-fn传递给friend/authenticate

代码语言:javascript
复制
(friend/authenticate
  handler
  {:credential-fn credential-fn
   :workflows [(workflows/interactive-form)]})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21353074

复制
相关文章

相似问题

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