使用Friend,Compojure,Ring成功验证后添加自定义会话条目

时间:2013-12-21 16:18:35

标签: session authentication clojure compojure ring

我正在尝试将我的第一个Web应用程序与Compojure放在一起,并使用Friend进行身份验证/授权。我遇到的问题是我想使用交互式表单工作流,但也可以在用户成功登录后设置自定义会话值。我想我应该创建自己的工作流程,但包装交互式工作流程但不确定如何以及这是否是正确的方法。

2 个答案:

答案 0 :(得分:1)

答案很简单,如果身份验证成功,朋友会自动将您的凭据哈希值(减去密码位)添加到会话中。

答案 1 :(得分:1)

这是正确的,如果你想更进一步并在这里添加一个自定义cookie你有一个用法例子:

 (defn friend-middleware
  "Returns a middleware that enables authentication via Friend."
  [handler]
  (let [auth-config {
                     :credential-fn (partial creds/bcrypt-credential-fn db/load-credentials)
                     :redirect-on-auth? false
                     :logout-uri "/logout"
                     :signup-uri "/registration"
                     :workflows
                  [;; Note that ordering matters here. Basic first.
                   (workflows/interactive-form)
                   ]}]
    (-> handler
        (friend/authenticate auth-config)
        (wrap-session {:cookie-attrs {:max-age 3600} :cookie-name "my-site.com" } )
        )))

https://gist.github.com/jaimeagudo/8931879

希望有所帮助