LoginSignup
11
10

More than 5 years have passed since last update.

gem deviseでAPIの認証を行う方法(Basic認証)

Last updated at Posted at 2014-01-29

gem deviseはユーザー登録・ログイン機能を手早く実装するのに便利です。

APIを提供する際にもdeviseの機能で認証が出来ると便利と思い調べました。

OAuth2 Tokenによる認証方法だとdevise + doorkeeperが良いと思われますが、もっと簡易的なBasic認証での方法について。

class Api::ApiController < ApplicationController

  before_filter :check_auth


  def check_auth
    authenticate_or_request_with_http_basic do |username,password|
      resource = User.find_by_email(username)
      if resource.valid_password?(password)
        sign_in :user, resource
      end
    end
  end

end

wikiの記事そのままですが、上記コードを実装することでcurrent_userメソッドからAPIを実行したユーザーのインスタンスを参照出来ます。

※ 実際にサービス提供する際はSSLは必須になりますね :)

おまけ

下記コードを追加する事で認証無しのリクエスト(ブラウザからのリクエスト時など)を弾くことができる。

unless env['HTTP_AUTHORIZATION']
  return render json: '{"message":"Requires authentication"}', status: 401
end
11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10