gpt4 book ai didi

clojure - 使用重新框架实现登录系统

转载 作者:行者123 更新时间:2023-12-02 02:52:39 25 4
gpt4 key购买 nike

我是重新构建的新手,不太确定如何使用它构建用户身份验证/授权系统。

根据我收集到的信息,我应该创建一个身份验证 interceptor并将我的身份验证逻辑放入 :before然后将拦截器注入(inject)每个事件 reg-event-dbreg-event-fx我想保护的。

我在正确的轨道上吗?

最佳答案

不确定我的解决方案是否特别惯用,但我在我的一个项目中使用了类似以下的内容。把它当作我的作品。

为错误情况创建一个带有特殊值的 ajax 请求映射(忽略 context-uri 函数):

(defn xhrio-map [method path format success-event]
{:method method
:uri (context-uri path)
:timeout 5000
:response-format format
:on-success [success-event]
:on-failure [::ajax-failure]})

然后我对失败使用 fx 处理程序(这有点复杂,因为它还处理加载指示器):
(rf/reg-event-fx
::ajax-failure
(fn [{:keys [db]} [_ http-result]]
(if (= 403 (:status http-result))
{:db (assoc db :loading-indicator nil)
:dispatch [::logout]}
{:db (assoc db :loading-indicator nil)
:dispatch
[::error-msg (str "Error fetching from " (:uri http-result)
": " (:response http-result))]})))
::logout events 设置文档位置。这也会触发后端的注销。
(rf/reg-event-fx
::logout
(fn [coefx [ev]]
{::location "./logout"}))

最后,资源的加载是这样的:
 (defn load-with-indicator [db xhrio-data]
{:db (assoc db :loading-indicator true)
:http-xhrio xhrio-data})

(rf/reg-event-fx
::load-documentation
(fn [{:keys [db]} _]
(load-with-indicator
db
(xhrio-map :get "documentation/"
(ajax/json-response-format {:keywords? true})
::received-documentation))))
:received-documentation由调用正确显示功能的一些代码处理。

这使用 day8.re-frame/http-fxajax.core
在后端,我使用了类似于我在 https://github.com/ska2342/ring-routes-demo 上发布的演示代码的内容。 .

希望有帮助。

这篇文章中代码的许可证

除了 StackOverflow 站点的默认许可之外,我还在 Eclipse Public License 1.0 版或(由您选择)任何更高版本下发布这些行。

关于clojure - 使用重新框架实现登录系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51349729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com