【发布时间】:2019-01-15 04:18:38
【问题描述】:
我有一个简单的路由和中间件设置,其中包含使用环形中间件的 compojure/swagger。
(POST "/worlds" [request]
:body-params [name :- String]
:header-params [token :- String]
:middleware [wrap-api-auth]
:summary "Creates a new world with 'name'"
(ok (do-something-with-user)
(defn wrap-api-auth [handler]
(fn [request]
(let
[token (get (:headers request) "token")
user (db/get-user-by-token token)]
(if user
(handler request) ; pass to wrapped handler
(unauthorized {:error "unauthorized"})))))
这定义了一个带有一些基本身份验证的简单路由。头参数中传递的令牌用于进行数据库查询,该查询要么返回用户并继续,要么返回 false 并失败。
我想要完成的是将返回的用户传回,以便我以后可以使用它。我没有运气,因为我真的不知道我会在哪里尝试将它添加到我以后可以访问它。我试过用request 来assoc 它,但我以后似乎无法访问它。理想的情况是我能够将它传递给do-something-with-user 函数。
【问题讨论】:
-
我已经尝试将它与请求相关联......我已经成功地做到了这一点。您能说明您是如何尝试这样做的,以及您以后如何尝试访问它吗?
标签: clojure middleware compojure ring