auth 驗證
一般來說我們不會希望 private API 接口被任意調用,尤其是內部溝通的 API,又或是要區別哪一個使用者所進行的身份驗證。
比較簡單的作法,可以用 http basic auth
module ApiV0
class Base < Grape::API
#...
http_basic do |username, password|
username == "test" && password == "secret"
end
#...
end
end
這樣一來請求所有 ApiV0 的接口,都會被要求加上 basic auth,需要輸入正確的 username / password
如果沒有提供,會被 grape 攔下來,並且返回 401 Unauthorized
但一般業界比較少用 http basic auth(如果走 http 協議就更不適用),多半會使用自定義的 header 比方說 X-Api-Secret-Key
在請求時請發起方帶上正確的 token
修改如下
module ApiV0
class Base < Grape::API
# 將 http basi 拿掉換成以下
before do
unless request.headers["X-Api-Secret-Key"] == "secret"
error! "forbidden", 403
end
end
end
end
在沒有帶 header 的情況下,會拿到這樣的回應
{
"error": "forbidden"
}
備註:這個章節僅是說明使用的方法,如果要跟著實做完整專案,可以不必寫入 commit 內