1

我正在尝试对 compojure、ring 应用程序进行身份验证。/login如果用户未通过身份验证,我想要做的是重定向到。下面的方法似乎正在做我想要的。

我在这里添加了wrap-restricted处理程序#'home-routes

(def app-routes
  (routes
   (-> #'home-routes
       (wrap-routes middleware/wrap-restricted)
       (wrap-routes middleware/wrap-csrf)
       (wrap-routes middleware/wrap-formats)
       ...))

然后在中间件中,我更改了处理程序on-error中引用的wrap-restricted,以执行重定向而不是 403 响应:

(defn on-error [request response]
  ;; (error-page
  ;;   {:status 403
  ;;    :title (str "Access to " (:uri request) " is not authorized")})
  (redirect (format "/login?next=%s" (:uri request))))


(defn wrap-restricted [handler]
  (restrict handler {:handler authenticated?
                     :on-error on-error}))

我的问题是,这是正确的(推荐的最佳实践)方法吗?

4

0 回答 0