Как сохранить пользователя в сеансе noir в веб-проекте compojure? - PullRequest
0 голосов
/ 12 сентября 2018

Мне нужно сохранить имя пользователя в сеансе, и я не могу заставить его работать. Это мой код (sesh noir session):

(defn set-loggedin [username password]
(do
(sesh/put! :username (:user username))
(sesh/put! :password (:pass password))))

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

(defroutes app-routes
(GET "/" [] (view/login-form "" ))
(POST "/" [username password] (login-handler username password))
(GET "/main" [] (view/main-page))
(route/resources "/")
(route/not-found "Not Found"))

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

Это главная страница в hiccup, и она не показывает пользователя, когда я захожу:

(defn main-page []
(html[:head [:title "main"]] [:body
                             (sesh/get :username)] ))

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 12 сентября 2018

В вашей функции set-loggedin вы пытаетесь получить ключ: user из 'username', который, как я подозреваю, является строкой, и ключ: pass из 'password', который, вероятно, является строкой.

В определении функции также нет необходимости, поэтому попробуйте следующее:

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