【发布时间】:2014-06-02 06:46:52
【问题描述】:
我正在为我的大学开发一个 clojure Web 应用程序项目,我正在尝试将 datomic 数据库与朋友身份验证连接起来,但有点错误...我会进一步解释...
首先我正在像这样进行用户注册(用户插入到数据数据库中)并且它正在工作。
(defn insert-user [firstname lastname email password sex date] (.get (.transact conn
[{
:db/id #db/id[:db.part/user -1000001]
:user/name firstname
:user/lastName lastname
:user/username email
:user/password (creds/hash-bcrypt password)
:user/gender sex
:user/birthDate date}
]))
(resp/redirect "/")
)
路由处理程序和好友验证器看起来像这样...函数 main 是启动应用程序。
(def page (handler/site
(friend/authenticate
routes
{:allow-anon? true
:login-uri "/login"
:default-landing-uri "/login"
:unauthorized-handler #(-> (html5 [:h2 "You do not have sufficient privileges to access " (:uri %)])
resp/response
(resp/status 401))
:credential-fn (partial creds/bcrypt-credential-fn users)
:workflows [(workflows/interactive-form)]})
(wrap-keyword-params routes)
(wrap-nested-params routes)
(wrap-params routes)
))
(defn -main []
(run-jetty page {:port 8080 :join? false}))
最后是用户的datomic查询匹配朋友的creds/bcrypt-credential-fn函数。
(defn upit-korisnici []
(def temp (d/q '[:find ?u ?p
:where [?user :user/username ?u]
[?user :user/password ?p]
]
(d/db conn)))
(def users (into {} (map (fn [[k v]] [k {:username k :password v}]) temp)))
users
)
困扰我并让我无助的是,当我注册(插入用户)时,用户被插入到 datomic 数据库中,但是当我尝试登录时,我不能。它说错误的电子邮件和密码,但是新用户在那里。当我重新启动整个应用程序并尝试使用新用户凭据登录时,它会通过并登录。有人知道如何解决这个问题吗?
编辑:
我通过将 :credential-fn (partial creds/bcrypt-credential-fn users) 更改为 :credential-fn #(creds/bcrypt-credential-fn users % 解决了这个问题)。
【问题讨论】:
标签: clojure