セッションに格納されているキーで判別し、権限を分けています。
defroutes ではなく、def-restricted-routes を使わないといけないことに気づかずハマってしまいました。
core.clj
(def-restricted-routes api-routes
(GET "/" req (index-page)
(GET "/hoge" req (hoge-page))
(defn user-access [req]
(contains? (:session req) :user))
(def access-rules
[{:uri "/hoge" :rule user-access}])
(def app
(noir-middleware/app-handler
[api-routes]
:access-rules access-rules))
)