0
ring
과 compojure
및 friend
을 사용하여 장난감 앱에서 기본 비밀번호 인증을 실현합니다. 이제 예제를 구현하려고했는데 링 서버가 모든 브라우저에서 리디렉션 루프를 발생시킵니다.Clojure 친구가 기본 인증을 사용하여 리디렉션 루프를 발생시킵니다.
(ns kassenclo.handlers
(:use [ring.util.response]
[ring.middleware.resource]
[ring.middleware.params])
(:require [compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.session :refer [wrap-session]]
[ring.middleware.keyword-params :refer [wrap-keyword-params]]
[kassenclo.views :as views]
[cemerick.friend :as friend]
[cemerick.friend.workflows :refer [make-auth]]))
(defroutes app
(GET "/" [] views/tally-view)
(GET "/inventory" [] (friend/authorize #{::user} views/inventory-view))
(route/not-found (html [:h1 "This page could not be found, please go back."])))
(defn auth-workflow [request]
(let [speak (get-in request [:params :speak])
credential-fn (get-in request [::friend/auth-config :credential-fn])]
(make-auth (credential-fn speak))))
(defn auth-credential [password]
(if (= password "pass")
{:identity password :roles #{::user}}))
(def handler
(-> app
(friend/authenticate {:workflows [auth-workflow]
:credential-fn auth-credential})
(wrap-keyword-params)
(wrap-params)
(wrap-session)
(wrap-resource "public")))
간단한 디버깅이 중지되기 전에 서버가 몇 번 auth-workflow
사이 auth-credential
을 번갈아 것을 나에게 보여줍니다
이
내 코드입니다. 아무도 내가 놓친 것을 나에게 지적 해 줄 수 있니? // 편집: 호기심 것은이 리디렉션 루프도 friend
가 defroutes
명령에 사용되지 /
에 모든 경로에서 발생한다는 것입니다.