使用buddy-auth时为什么没有用户名/密码对话框?

时间:2018-02-23 10:26:11

标签: clojure

我正在使用buddy-auth并在tutorial之后,当我运行example application时,我按预期获得了一个HTTP身份验证用户名/密码对话框,但在我自己的应用中只是得到了#34;未经授权的#34;异常,没有对话框出现。

;; fn needs to return a non-falsey value to indicate a positive authentication, the returned value is stored under the `:identity` key in the request.
(defn auth-user [request authdata]
  (let [username (:username authdata)
        password (:password authdata)]
     username)) ;; FIXME: lookup username/password

(def auth-backend (http-basic-backend {:realm "MyApp" :authfn auth-user}))

;; my endpoint handler
(defn test-handler [r]
  (if (authenticated? r)
    (render (str "LOGGED IN" (:identity r)))
    (throw-unauthorized)))

;; ROUTES (compojure)
(defroutes app  
  (GET "/test" [] test-handler))

;; ring handler
(def site
  (-> (routes app)
      (wrap-authentication auth-backend) ;; <--- 
      (wrap-defaults)         
      (wrap-with-exception-handling)))

我不认为auth-user曾被召唤过。

1 个答案:

答案 0 :(得分:1)

我似乎也需要(wrap-authorization auth-backend)

(def site
  (-> (routes app)
      (wrap-authentication auth-backend)
      (wrap-authorization auth-backend)
      (wrap-defaults)         
      (wrap-with-exception-handling)))