首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reitit环。仅在Luminus上的一组路由中进行身份验证和授权

Reitit环。仅在Luminus上的一组路由中进行身份验证和授权
EN

Stack Overflow用户
提问于 2020-01-18 01:10:41
回答 1查看 387关注 0票数 1

我正在用Luminus开发一个站点,直到现在我的中间件包装库函数看起来像这样:

代码语言:javascript
复制
(defn wrap-base [handler]
  (-> ((:middleware defaults) handler)
  wrap-auth
  (wrap-access-rules {:rules rules :on-error on-error})
  (wrap-authentication (session-backend))
   wrap-flash
  (wrap-defaults
    (-> site-defaults
        (assoc-in [:security :anti-forgery] false)
        (assoc-in  [:session :store] (ttl-memory-store (* 60 30)))))
  wrap-internal-error))

和我的routes/home.clj文件:

代码语言:javascript
复制
 (defn home-routes []
   [""
     {:middleware [middleware/wrap-csrf
                   middleware/wrap-formats]}
     (merge public-routes admin-routes)])

但是现在我需要开发一个新的API ("/ API /getcustomers"),所以所有的身份验证/授权(和csrf)中间件必须只针对“home-route”,而不是针对新的API路由。API路由保存在一个新的routes/services.clj文件中。

幸运的是,卢米纳斯使用了reitit.ring,这是一种数据驱动的路由解决方案,但我不确定如何将身份验证/授权内容从一般的中间件中移出,而只将其分配给"home-routes“部分。

EN

回答 1

Stack Overflow用户

发布于 2020-01-19 05:50:14

我结束了在环中为新API创建规则:

代码语言:javascript
复制
  ;; File: src/some_app/middleware.clj  
  (defn open-gates [request]
       true)

  (def rules [{:pattern #"^/admin.*"
         :handler admin-access
         :redirect "/notauthorized"},
        {:pattern #"^\/vclass.*"
         :handler user-access
         :redirect "/notauthorized"},
        {:pattern #"^\/api.*"
         :handler open-gates
         :redirect "/notauthorized"},
        {:pattern #"^/user.*"
         :handler authenticated?}])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59791940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档