I have tried putting (friend/authenticate) at the beginning and end of this block:
(def app (-> app-routes (wrap-session {:cookie-name "timeout-session" :cookie-attrs {:max-age 90}}) (wrap-cookies) (wrap-multipart-params) (wrap-params) (wrap-nested-params) (wrap-keyword-params) (friend/authenticate {:workflows [(workflows/interactive-form)] :credential-fn (partial creds/bcrypt-credential-fn users) :login-uri "/login" :unauthorized-redirect-uri "/login" :default-landing-uri "/admin"}))) and: (def app (-> app-routes (friend/authenticate {:workflows [(workflows/interactive-form)] :credential-fn (partial creds/bcrypt-credential-fn users) :login-uri "/login" :unauthorized-redirect-uri "/login" :default-landing-uri "/admin"}) (wrap-session {:cookie-name "timeout-session" :cookie-attrs {:max-age 90}}) (wrap-cookies) (wrap-multipart-params) (wrap-params) (wrap-nested-params) (wrap-keyword-params) )) but that doesn't seem to matter. I defined my one user in the namespace as: (def users {"admin" {:username "admin" :password (creds/hash-bcrypt "47010thave") :roles #{::admin}}}) If I point my broswer here: localhost:30000/admin I get redirected to here: localhost:30000/admin I then fill in this form: <form action="/login" method="POST">Username: <input type="text" name=" username" /><br />Password: <input type="password" name="password" /><br /> <input type="submit" name="submit" value="submit" /><br /></form> If I print the request to the terminal, the form params are all blank: {:ssl-client-cert nil, :remote-addr "0:0:0:0:0:0:0:1", :scheme :http, :query-params {"username" "", "login_failed" "Y", "" nil}, :session {}, :cemerick.friend/auth-config {:unauthorized-redirect-uri "/login", :allow-anon? true, :default-landing-uri "/admin", :login-uri "/login", :credential-fn #<core$partial$fn__4070 clojure.core$partial$fn__4070@1627fd1>, :workflows [#<workflows$interactive_form$fn__4503 cemerick.friend.workflows$interactive_form$fn__4503@28ee2be9>], :unauthenticated-handler #<Var@557db906: #<friend$default_unauthenticated_handler cemerick.friend$default_unauthenticated_handler@114e8c69>>, :unauthorized-handler #<Var@3d93cfcb: #<friend$default_unauthorized_handler cemerick.friend$default_unauthorized_handler@1aaad63a>>}, :form-params {}, :multipart-params {}, :request-method :get, :query-string "&login_failed=Y&username=", :route-params {}, :content-type nil, :cookies {"timeout-kiosk" {:value "timeout-kiosk3312112"}}, :uri "/login", :server-name "localhost", :params {"" nil, "login_failed" "Y", "username" ""}, :headers {"user-agent" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537\ .31", "cookie" "timeout-kiosk=timeout-kiosk3312112", "accept-charset" "ISO-8859-1,utf-8;q=0.7,*;q=0.3", "accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "host" "localhost:30001", "referer" "http://localhost:30001/login?&login_failed=Y&username=", "cache-control" "max-age=0", "accept-encoding" "gzip,deflate,sdch", "accept-language" "en-US,en;q=0.8", "connection" "keep-alive"}, :content-length nil, :server-port 30001, :character-encoding nil, :body #<HttpInput org.eclipse.jetty.server.HttpInput@25796d08>} I have defined the routes like this: (defroutes app-routes (ANY "/" request (home-page request)) (GET "/login" request (login request)) (friend/logout (ANY "/logout" request (ring.util.response/redirect "/"))) (GET "/serve-file/:file-id" request (serve-file request)) (GET "/home/:slides-id" request (home-page request)) (GET "/action/:action-to-perform" request (action request)) (GET "/admin" request (friend/authorize #{::admin} (admin request))) (GET "/admin/list/:item-type" [item-type] (admin-list item-type)) (GET "/admin/edit/:item-type" request (admin-forms request)) (GET "/admin/edit/:item-type/:item-name" request (admin-forms request)) (POST "/admin/edit/:item-type/:item-name" request (admin-process-form-input request)) (POST "/admin/edit/:item-type" request (admin-process-form-input request)) (GET "/admin/delete/:item-type/:item-name" request (admin-delete-ask-for-confirmation request)) (POST "/admin/delete/:item-type/:item-name" request (admin-delete-finalized request)) (GET "/admin/clone/:item-type/:item-name" request (admin-clone-this-item request)) (GET "/admin/preview/:item-type/:item-name" request (admin-preview request)) (GET "/admin/upload" request (admin-upload request)) (route/resources "/") (route/not-found "Page not found")) And the login function looks like this: (defn login [request] (println (pp/pprint request)) "2013-03-01 - the default name of the function expected by the Friend authorization library." (timbre/spy :debug " the return value of the login page: " (let [login-template (enlive/html-resource "templates/login.html") login-html (apply str (enlive/emit* login-template)) layout (enlive/html-resource "templates/admin.html") layout (enlive/transform layout [:#outer] (enlive/html-content login-html)) html (apply str (enlive/emit* layout)) ] (response html)))) Any thoughts about why the form inputs are empty? -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.