Ruby on Rails
레일즈에서의 사용자 인증
수색…
소개
Devise는 매우 강력한 보석입니다. 설치 후 바로 로그인하고 로그인 할 수 있습니다. 또한 사용자는 응용 프로그램에 인증 및 제한 사항을 추가 할 수 있습니다. Devise는 사용자가 사용하기를 원한다면 자체 견해를 가지고 있습니다. 사용자는 필요와 요구 사항에 따라 등록 양식을 사용자 정의 할 수도 있습니다. Devise는 레일스를 처음 사용하는 경우 자신의 로그인을 구현할 것을 권장합니다.
비고
rails generate devise:install
사용하여 devise configs를 생성 할 때, devise는 따라야 할 터미널에 대한 지침을 나열합니다.
USER
모델이 이미있는 경우이 명령을 실행하면 rails generate devise USER
가 기존 USER
모델에 필요한 열을 추가합니다.
이 헬퍼 메소드 before_action :authenticate_user!
사용하십시오 before_action :authenticate_user!
귀하의 컨트롤러 상단에 user
가 로그인했는지 여부를 확인하십시오. 그렇지 않은 경우 로그인 페이지로 리디렉션됩니다.
Devise를 사용한 인증
Gemfile에 gem을 추가하십시오 :
gem 'devise'
그런 다음 bundle install
명령을 실행하십시오.
명령 $ rails generate devise:install
을 사용하여 필수 구성 파일을 생성하십시오.
각 환경의 Devise 메일러에 대한 기본 URL 옵션 설정 개발 환경에서 다음 행을 추가하십시오.
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config/environments/development.rb
하십시오.
마찬가지로 프로덕션 config/environments/production.rb
파일을 편집하고
config.action_mailer.default_url_options = { host: 'your-site-url'}
그런 다음 다음을 사용하여 모델을 작성하십시오. $ rails generate devise USER
여기서, USER
는 인증을 구현하려는 클래스 이름입니다.
마지막으로, rake db:migrate
실행하면 모든 것이 설정됩니다.
사용자 정의보기
뷰를 구성해야하는 경우 모든 뷰를 응용 프로그램에 복사하는 rails generate devise:views
생성기를 사용할 수 있습니다. 그런 다음 원하는대로 편집 할 수 있습니다.
응용 프로그램 (예 : User 및 Admin)에 둘 이상의 Devise 모델이있는 경우 Devise는 모든 모델에 대해 동일한보기를 사용함을 알 수 있습니다. Devise는보기를 사용자 정의하는 쉬운 방법을 제공합니다. config/initializers/devise.rb
파일에서 config.scoped_views = true
설정하십시오.
생성기를 사용하여 범위보기를 생성 할 수도 있습니다. rails generate devise:views users
등록 가능한 모듈과 확인할 수있는 모듈과 같은 몇 가지보기 세트 만 생성하려면 -v 플래그를 사용하십시오. rails generate devise:views -v registrations confirmations
컨트롤러 필터 및 도우미 작성
devise를 사용하여 사용자 인증을 사용하여 컨트롤러를 설정하려면 다음과 같이 before_action을 추가하십시오 (사용자의 모델이 '사용자'라고 가정).
before_action :authenticate_user!
사용자가 로그인했는지 확인하려면 다음 도우미를 사용하십시오.
user_signed_in?
현재 로그인 한 사용자의 경우이 도우미를 사용하십시오.
current_user
이 범위의 세션에 액세스 할 수 있습니다.
user_session
- 귀하의 Devise 모델이
User
) 대신Member
)로 불리는 경우, 위의user
를member
옴니 오스
먼저 auth 전략을 선택하여 Gemfile
추가하십시오. 여기에 전략 목록이 있습니다. https://github.com/intridea/omniauth/wiki/List-of-Strategies
gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'
레일 미들웨어에 다음과 같이 추가 할 수 있습니다.
Rails.application.config.middleware.use OmniAuth::Builder do
require 'openid/store/filesystem'
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
provider :openid, :store => OpenID::Store::Filesystem.new('/tmp')
end
기본적으로 OmniAuth는 /auth/:provider
를 경로에 추가하므로이 경로를 사용하여 시작할 수 있습니다.
기본적으로 오류가 발생하면 omniauth는 /auth/failure
리디렉션됩니다.
has_secure_password
사용자 모델 만들기
rails generate model User email:string password_digest:string
사용자 모델에 has_secure_password 모듈 추가
class User < ActiveRecord::Base has_secure_password end
이제 비밀번호로 새 사용자를 만들 수 있습니다.
user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'
인증 방법으로 비밀번호 확인
user.authenticate('somepassword')
has_secure_token
사용자 모델 만들기
# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
has_secure_token
has_secure_token :auth_token
end
이제 새 사용자를 만들 때 토큰과 auth_token이 자동으로 생성됩니다.
user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"
regenerate_token
및 regenerate_auth_token
사용하여 토큰을 업데이트 할 수 있습니다.
user.regenerate_token # => true
user.regenerate_auth_token # => true