Non sto davvero capendo https://github.com/clojure-liberator/liberator e l'elenco dei punti decisionali che fornisce allo sviluppatore. Come si potrebbe implementare un servizio di autenticazione/autenticazione di base utilizzando/a fianco/in cima alla libreria?Come implementare l'autenticazione utente usando clojure-liberator?
8
A
risposta
6
dal readme"
risorse sono compatibili con l'anello e possono essere avvolti in anello middleware. Quando ha valutato, una risorsa restituisce una funzione che prende una richiesta Anello e restituisce una risposta anello.
modo da poter poi avvolgerlo in 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
il modo idiomatica è l'attuazione del :authorized?
punto di decisione. Tuttavia non esiste attualmente alcun supporto per la gestione dell'autenticazione di base o digest. Un approccio pratico è quello di utilizzare ring-basic-authentication
per l'autenticazione e gestire solo l'autorizzazione nella risorsa. L'esempio seguente utilizza l'autenticazione ring-basic e imposta il token sul ruolo di un utente. Questo ruolo viene poi controllato da liberatore in 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?))
Problemi correlati
- 1. come implementare FTP usando java?
- 2. Come implementare un'interfaccia utente simile all'interfaccia utente recente di Lollipop?
- 3. OpenWrt: LuCI: come implementare l'accesso utente limitato
- 4. Come implementare l'autenticazione utente in phoenix
- 5. Come implementare la cache LFU usando STL?
- 6. Come implementare Reader usando monadi gratuiti?
- 7. come implementare l'autenticazione digest usando volley?
- 8. Come implementare i sottocomandi usando Boost.Program_options?
- 9. Come implementare il metodo update() in DAO usando EntityManager (JPA)?
- 10. Come implementare un'interfaccia utente segnaposto come schermata di avvio
- 11. Devo implementare IDisposable per un controllo utente?
- 12. Come devo implementare l'appartenenza utente nel mio sito ASP.NET MVC?
- 13. Come implementare un'interfaccia utente di arricciatura della pagina d'angolo?
- 14. Come faccio manualmente "registrare un utente in" usando WebSecurity + SimpleMembership?
- 15. re implementare modulo usando i bit shift?
- 16. Registrati/Registrati utente usando quickblox?
- 17. Come implementare un filesystem virtuale Python usando shelve
- 18. Come implementare l'algoritmo di Dijkstra in Neo4j usando Cypher
- 19. Come implementare l'aiuto (usando il germano reale) per un'app gtk3?
- 20. Come implementare un MKPointAnnotable trascinabile usando Swift (IOS)?
- 21. Come implementare PhantomJS con Selenium WebDriver usando java
- 22. Come implementare le direttive include usando boost :: spirit :: lex?
- 23. come implementare si aspetta il comando "interact" usando java
- 24. Come implementare funzionalità Logout usando Primavera Web MVC
- 25. Come implementare l'autenticazione dei cookie stateless usando Play Silhouette?
- 26. Come implementare la gestione dei cookie su Android usando OkHttp?
- 27. Come implementare le statistiche usando metriche dropwizard e spring-mvc
- 28. Come implementare l'autenticazione sicura usando xml-rpc in python?
- 29. (iPhone) come implementare i pin trascinabili usando OS 4.0 MapKit?
- 30. Come implementare il filtro passa-basso usando java
'cone' dovrebbe essere' cond' in questo (molto buono) esempio, ma noi [non posso accedere a correggere errori di battitura] (https: //meta.stackexchange .com/questions/77233/is-we-scoraggiato-da-fixing-typos-and-misspellings-on-stack-exchange-sites) – Conan
Il typo è fisso. Grazie per il suggerimento – ordnungswidrig
Sono stato in grado di gestire l'autenticazione, ma non l'autorizzazione. Se passo "admin-only" a wrap-basic-authentication ottengo il seguente errore "clojure.lang.ArityException: numero errato di argomenti (2) passato a: controller/solo admin". La mia dichiarazione di percorso è la seguente: (Richiesta GET "/ test" (richiesta solo admin) .Come il token arriva alla risorsa? Grazie. –