【问题标题】:Why is username not saved in noir session in Clojure project?为什么用户名没有保存在 Clojure 项目的 noir 会话中?
【发布时间】:2018-09-16 05:17:05
【问题描述】:

这是我在登录时保存它的方式:

(defn set-loggedin [username]
(sesh/put! :username username))

(defn login-handler [username password]
(let [user (datab/login username password)]
(if (empty? user)
(view/login-form "Wrong password.")
 (do
   (set-loggedin username)
   (resp/redirect "/movies")))))

(defroutes app-routes
 ...
(POST "/" [username password] (login-handler username password))
(POST "/movie/save" [movieID name] (film-new movieID name))
 ...)

 (def app
 (noir-middleware/app-handler
 [app-routes]
 :ring-defaults (assoc-in site-defaults [:security :anti-forgery] false)))

当我登录后在表单上显示用户名时,它会显示它,但是当我尝试保存电影(电影表有一个用户名列)并获取用户名时它是 nil。

(defn film-new [movieID name]
(datab/filmnew movieID name (sesh/get :username))
(resp/redirect "/movies")
 )

我是否错误地包装了会话?我不明白。我也试过这样包起来

def app (sesh/wrap-noir-session* 
       (noir-middleware/app-handler [app-routes]
         :ring-defaults (assoc-in site-defaults [:security :anti-forgery] 
false))))

【问题讨论】:

    标签: session clojure compojure noir lib-noir


    【解决方案1】:

    编辑:libnoir is now officially deprecated。开始here

    这是一个显示 libnoir 的有状态会话开箱即用的最小示例:

    (ns ln.core
      (:require
       [compojure.core :refer [defroutes GET]]
       [noir.session :as session]
       [noir.util.middleware :as middleware]
       [ring.adapter.jetty :refer [run-jetty]]))
    
    (defroutes app-routes
      (GET "/foo" []
           (session/update-in! [:foo] not)
           "Now go to /bar")
      (GET "/bar" []
           "foo was" (str (session/get :foo))))
    
    (def app
      (middleware/app-handler
       [app-routes]))
    
    (defonce server (atom nil))
    
    (defn stop-server []
      (when-let [s @server]
        (.stop s)))
    
    (defn dev []
      (stop-server)
      (reset! server (run-jetty app {:port 8888
                                     :join? false})))
    
    ;;;; Scratch
    
    (comment
      (dev)
      )
    

    如果您可以提供最小限度的复制以表明您的代码未按预期工作,我们可以进一步帮助您。话虽如此,libnoir 对我来说似乎有点被遗弃了。你最好从香草开始Ring

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 2021-12-10
      • 2011-09-10
      • 1970-01-01
      • 2023-01-28
      • 2013-04-13
      • 1970-01-01
      • 2015-05-25
      相关资源
      最近更新 更多