Я пытаюсь создать веб-сервис, используя compojure и swagger с очень простой базовой аутентификацией c. Я хотел бы, чтобы аутентификация была единой, например, «mylogin» и «mypassword» для логина и пароля. Пока что у меня есть
(ns my-api.handler
(:require [compojure.api.sweet :refer :all]
[ring.util.http-response :refer :all]
[schema.core :as s]))
(s/defschema Request
{:SomeData s/Str})
(s/defschema Result
{:Results s/Str})
(defn dummy-return [request]
{:Results "This is a dummy return"})
(def app
(api
{:swagger
{:ui "/"
:spec "/swagger.json"
:data {:info {:title "A testing API"
:description "Compojure Api example"}
:tags [{:name "api", :description "some apis"}]}}}
(context "/api" []
:tags ["api"]
(POST "/API-Example" []
:body [request Request]
:return Result
:summary "I want this to have a fixed basic authentication"
(ok (dummy-return request))))))
И все работает как положено. Но как мне сделать этот же API с базовой аутентификацией c для одного фиксированного пользователя? Я родом из python, и с 1011 * сделать это досадно легко. Мне было интересно, есть ли простое и элегантное решение, не получая слишком много подробностей.
Я пытался включить некоторые вещи, такие как :securityDefinitions {:login {:type "basic" :password "test"}}
на том же уровне, что и :data
, но я мог вызывать API даже без аутентификации это.
Я начал этот проект с lein new compojure-api my-api
Спасибо за помощь!