clojure - 如何使用clojure-liberator实现用户认证?

标签 clojure liberator

我不太明白https://github.com/clojure-liberator/liberator以及它提供给开发人员的决策点列表。如何使用库/与库一起/在库之上实现基本的身份验证/身份验证服务?

最佳答案

惯用的方法是实现 :authorized? 决策点。但是,目前不支持处理基本或摘要身份验证。一种实用的方法是使用ring-basic-authentication 进行身份验证并仅处理资源中的授权。以下示例使用ring-basic-authentication 并将 token 设置为用户的角色。然后解放者在 authorized?

中检查该角色
(defresource admin-only
  :handle-ok "secrect"
  :handle-unauthorized "for admins only"
  :authorized? (fn [{{token :token} :request}]
                 (= "admin" token)))

;; token returned encodes role
(defn authenticated? [name pass] 
  (cond (and (= name "scott") 
             (= pass "tiger")) "admin")
        (and (= name "jack")
             (= pass "jill"))  "user)))

(def app (wrap-basic-authentication admin-only authenticated?))

关于clojure - 如何使用clojure-liberator实现用户认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702003/

相关文章:

rest - 我使用 clojure 创建 REST API。如何自动生成REST文档?

clojure - 如何设置最大 leiningen repl 历史计数?

java - 如何在 Clojure 中创建一个原始的二维 (2d) double 组?

clojure liberator - 从 put 请求返回 json

clojure - 将 compojure noir 转换为 Liberator

clojure - 在 Liberator 中返回 201 Created 响应中的 Location header

clojure - 如何在 Clojure 中组合序列?

clojure - Clojure中是否有标准的 “foreach”函数?

clojure - 让 Clojure 中的 lambda block 扫描器生效