2012-12-04 16 views

Odpowiedz

6

z readme”

Zasoby są kompatybilne z pierścienia i może być owinięty w pierścienia pośredniczącego. Przy ocenie, zasób zwraca funkcję, która przyjmuje wniosek dzwonka i zwraca odpowiedź ring.

więc można następnie owinąć go w ring-basic-authentication

(use 'ring.middleware.basic-authentication) 
(defn authenticated? [name pass] (and (= name "foo") (= pass "bar"))) 
(def app (-> routes .. (wrap-basic-authentication authenticated?)) 
14

The idiomatycznym sposób jest wdrożenie :authorized? punkt decyzyjny. Jednak obecnie nie ma obsługi obsługi uwierzytelniania podstawowego lub uproszczonego. Praktycznym podejściem jest użycie ring-basic-authentication do uwierzytelnienia i obsługi tylko autoryzacji w zasobie. W poniższym przykładzie zastosowano uwierzytelnianie ring-basic-authentication i ustawia token na rolę użytkownika. Rola ta jest następnie sprawdzane przez wyzwoliciela w authorized?

(defresource admin-only 
    :handle-ok "secrect" 
    :handle-unauthorized "for admins only" 
    :authorized? (fn [{{token :token} :request}] 
       (= "admin" token))) 

;; token returned encodes role 
(defn authenticated? [name pass] 
    (cond (and (= name "scott") 
      (= pass "tiger")) "admin") 
     (and (= name "jack") 
      (= pass "jill")) "user))) 

(def app (wrap-basic-authentication admin-only authenticated?)) 
+0

'cone' powinno być' cond' w tej (bardzo dobrze) przykład, ale [nie mogą naprawić literówki] (https: //meta.stackexchange .pl/questions/77233/are-we-odradzamy-od-naprawiania-literówek-i-błędów pisowni-na-stornie-wymiennikach) – Conan

+0

Naprawiono literówkę. Dzięki za podpowiedź – ordnungswidrig

+0

Udało mi się zarządzać uwierzytelnianiem, ale nie autoryzacją. Jeśli przekażę "admin-only" tylko wrap-basic-authentication, otrzymam następujący błąd: "clojure.lang.ArityException: Błędna liczba argumentów (2) przekazanych do: controller/admin-only". Moja deklaracja trasy wygląda następująco: (Żądanie "/ test" (żądanie tylko administratora) Jak token dostaje się do zasobu? Dziękujemy –

Powiązane problemy