수색…


소개

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 )로 불리는 경우, 위의 usermember

옴니 오스

먼저 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_tokenregenerate_auth_token 사용하여 토큰을 업데이트 할 수 있습니다.

user.regenerate_token # => true
user.regenerate_auth_token # => true


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow