如何在Clojure中使用Liberator重定向get方法?

时间:2017-04-07 07:38:18

标签: clojure liberator

我有一个名为/account的端点,它提供用户信息(返回html)。

当未经授权的用户尝试访问此端点时,我需要能够重定向到login page但是在Liberator中我找到post-redirect到目前为止,它仅适用于post methods

我还需要重定向get methods,我该如何实现?

1 个答案:

答案 0 :(得分:3)

我发现下面的代码可以解决这个问题:

(defn account
  []
  (resource :allowed-methods [:get]

            :available-media-types ["text/html"]

            :exists? (fn [_] false)

            :existed? (fn [_] true)

            :moved-temporarily? (fn [ctx] {:location "/redirected-path-or-url"})

            :handle-ok (fn [ctx]
                         [:html ...])

            :handle-exception (fn [_]
                                "Something went wrong")))

或者你可以查看:authorized?并从:handle-unauthorized返回登录html,但我对此表示怀疑是不是一个好习惯。