Ruby on Rails
Devise를 사용하여 Api 인증
수색…
소개
Devise는 Rails를위한 인증 솔루션입니다. 더 진행하기 전에 API에 빠른 노트를 추가하고 싶습니다. 따라서 API는 요청 후에 응답을 제공하는 세션 (상태 비 저장)을 처리하지 않습니다. 따라서 더 이상주의를 기울일 필요가 없습니다. 즉, 서버에 요청할 때마다 시스템이 작동하기 위해 이전 또는 미래의 상태가 필요하지 않습니다. 모든 API로 인증 세부 사항을 전달하고 인증 세부 사항을 저장하지 않도록 Devise에 알려야합니다.
시작하기
먼저 레일 프로젝트를 만들고 장치를 설정합니다.
레일 응용 프로그램 만들기
rails new devise_example
이제 보석 목록에 고안을 추가하십시오.
당신은 레일 프로젝트의 루트에서 'Gemfile'이라는 파일을 찾을 수있다.
그런 다음 bundle install
실행하십시오.
다음으로 생성기를 실행해야합니다.
rails generate devise:install
이제 콘솔에서 몇 가지 지침을 찾을 수 있습니다.
개발자 모델 생성
rails generate devise MODEL
그런 다음 rake db:migrate
실행합니다 rake db:migrate
자세한 내용은 다음을 참조하십시오 : Devise Gem
인증 토큰
인증 토큰은 고유 한 토큰을 가진 사용자를 인증하는 데 사용됩니다. 먼저 논리적으로 진행하기 전에 auth_token
필드를 Devise 모델에 추가해야합니다
금후,
rails g migration add_authentication_token_to_users
class AddAuthenticationTokenToUsers < ActiveRecord::Migration
def change
add_column :users, :auth_token, :string, default: ""
add_index :users, :auth_token, unique: true
end
end
그런 다음 rake db:migrate
실행합니다 rake db:migrate
이제 auth_token
사용하여 인증을 수행하도록 설정되었습니다.
app/controllers/application_controllers.rb
먼저이 줄을
respond_to :html, :json
이것은 레일 애플리케이션이 html과 json으로 응답하는 것을 돕는다.
그때
protect_from_forgery with: :null
이 변경됩니다 :null
우리는 세션을 다루지 않습니다.
이제 우리는 application_controller에 인증 방법을 추가 할 것입니다.
따라서 기본적으로 Devise는 전자 메일을 고유 필드로 사용하므로 사용자 정의 필드도 사용할 수 있습니다.이 경우 user_email 및 auth_token을 사용하여 인증합니다.
before_filter do
user_email = params[:user_email].presence
user = user_email && User.find_by_email(user_email)
if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
sign_in user, store: false
end
end
참고 : 위의 코드는 순수하게 당신의 논리를 기반으로합니다. 나는 단지 예제를 설명하려고합니다.
위의 코드에서 6 번 라인에서 나는 store: false
설정했다는 것을 알 수있다 store: false
는 각 요청마다 세션을 생성하는 것을 막을 것이기 때문에 우리는 stateless re를 얻었다.