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 內

Copyright © NicLin 2019 all right reserved,powered by Gitbook該頁面生成時間: 2019-04-09 10:00:37

results matching ""

    No results matching ""