I have the following setting up an app where some pages will be
protected by Friend.
(defroutes app-routes
(GET "/" request (index request))
(GET "/search-results" request (search-results request))
(GET "/account" request (friend/authorize #{::user} (account
request)))
(GET "/admin" request (friend/authorize #{::admin} (admin request)))
(friend/logout (ANY "/logout" request (ring.util.response/redirect
"/")))
(GET "/login" request (login request))
(route/not-found "Page not found"))
(def app
(-> app-routes
(friend/authenticate {:credential-fn (partial creds/bcrypt-
credential-fn (:users @interactions))
:workflows [(workflows/interactive-
form)]})
(wrap-resource "public")
(wrap-session {:cookie-name "discovery-session" :cookie-attrs
{:max-age 10000 }})
(wrap-cookies)
(wrap-params)))
(defn -main [& args]
(let [port (Integer/parseInt (first args))]
(try
(run-jetty #'app {:port (or port 8080) :join? false})
(catch Exception e (debug/print-error-info e)))))
If I try to go to /admin without being logged in, I should get
redirected to /login, but instead I get:
java.lang.ClassCastException: java.lang.String cannot be cast to
clojure.lang.Associative
at clojure.lang.RT.assoc(RT.java:691)
at clojure.core$assoc.invoke(core.clj:187)
at clojure.core$assoc_in.invoke(core.clj:5459)
at clojure.core$assoc_in.invoke(core.clj:5458)
at cemerick.friend
$default_unauthenticated_handler.invoke(friend.clj:164)
at clojure.lang.Var.invoke(Var.java:415)
at cemerick.friend$authenticate_STAR_.invoke(friend.clj:202)
at cemerick.friend$authenticate$fn__1341.invoke(friend.clj:
207)
at ring.middleware.resource$wrap_resource
$fn__2730.invoke(resource.clj:17)
at ring.middleware.session$wrap_session
$fn__2651.invoke(session.clj:43)
at ring.middleware.cookies$wrap_cookies
$fn__2588.invoke(cookies.clj:160)
at ring.middleware.cookies$wrap_cookies
$fn__2588.invoke(cookies.clj:160)
at ring.middleware.params$wrap_params
$fn__2400.invoke(params.clj:55)
at clojure.lang.Var.invoke(Var.java:415)
at ring.adapter.jetty$proxy_handler$fn__2809.invoke(jetty.clj:
18)
at ring.adapter.jetty.proxy
$org.eclipse.jetty.server.handler.AbstractHandler$0.handle(Unknown
Source)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:
111)
at org.eclipse.jetty.server.Server.handle(Server.java:349)
at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:
452)
at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:
884)
at org.eclipse.jetty.server.AbstractHttpConnection
$RequestHandler.headerComplete(AbstractHttpConnection.java:938)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:
634)
at
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
at
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:
76)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:
609)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint
$1.run(SelectChannelEndPoint.java:45)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:
599)
at org.eclipse.jetty.util.thread.QueuedThreadPool
$3.run(QueuedThreadPool.java:534)
at java.lang.Thread.run(Thread.java:722)
Has anyone seen this error before?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en