使用clojure预路由设置筛选器不起作用
我已经为clojure创建了一个带有noir框架的web项目,并希望尝试使用pre-route宏 这是我的测试使用clojure预路由设置筛选器不起作用,clojure,Clojure,我已经为clojure创建了一个带有noir框架的web项目,并希望尝试使用pre-route宏 这是我的测试 (ns website.views.test (:require [website.views.common :as common] [noir.content.getting-started]) (:use [noir.core :only [defpage]]) (:use [hiccup.core :only [html]]) (:require noir.cor
(ns website.views.test
(:require [website.views.common :as common] [noir.content.getting-started])
(:use [noir.core :only [defpage]])
(:use [hiccup.core :only [html]])
(:require noir.core))
(defn is-admin? [] false)
(pre-route '/admin/*' (when-not (is-admin?) (redirect '/login')))
(defpage "/login" [] (common/layout [:p "login to website"]))
(defpage "/admin" [] (common/layout [:p "Welcome to admin page"]))
(defpage "/admin/test1" [] (common/layout [:p "Welcome to admin test1 page"]))
(defpage "/admin/test2" [] (common/layout [:p "Welcome to admin test2"]))
当我执行'lein run'时,我得到以下堆栈跟踪
Caused by: java.lang.RuntimeException: Invalid token: /admin/*'
at clojure.lang.Util.runtimeException(Util.java:170)
at clojure.lang.LispReader.interpretToken(LispReader.java:321)
at clojure.lang.LispReader.read(LispReader.java:206)
at clojure.lang.LispReader$WrappingReader.invoke(LispReader.java:537)
at clojure.lang.LispReader.readDelimitedList(LispReader.java:1126)
at clojure.lang.LispReader$ListReader.invoke(LispReader.java:962)
at clojure.lang.LispReader.read(LispReader.java:180)
at clojure.lang.Compiler.load(Compiler.java:6949)
... 51 more
是否知道导致此异常的原因(当我注释掉预路由宏时不会发生此异常)?(预路由“/admin/*”(当不是时(是admin?)(重定向“/login”)
应该是:
(预路由“/admin/*”(非时(是否为管理员?)(重定向“/login”))
因为
”
是一个用于引用的读卡器宏。我没有使用noir
,但是pre-route表单中的单引号看起来很可疑。这些应该是字符串双引号吗?