디자인, Rails 사용자 인증 스위스 군도.
5149 단어 rails
왜 디자인했어요??
만약 네가 나와 같다면, 너는 마이클 하틀의 《 rails 》 라는 책을 읽으며 rails를 배울 것이다.이 책은 rails와 TDD 방법을 배우고 싶은 모든 사람에게 추천하는 진귀한 책이다.책에서 사용자 모델을 구축할 때 Michael은
has_secure_password
를 사용하여 사용자 신분 검증을 한다.이 예는 매우 유용하다. 이것이 바로 내가 쓰는 것이다. 왜냐하면 이것이 내가 아는 것이기 때문이다.내가 계속 r/rails하고 Deave를 발견할 때까지.Well Desive는 사용자 인증을 위한 기묘한 보석입니다.이것은 내가 여기서 설명한 것보다 훨씬 많은 일을 처리하지만, 기본적으로 신분 검증, 실패한 로그인 시도 관리, 계정 잠금, 계정 복구를 위한 특정한 컨트롤러 방법을 구축할 필요가 없다. 프로그램에 Desive를 설치하기만 하면 모든 기능을 얻을 수 있다.
어떻게 설계합니까
우선, 문서는 항상 값이 없는 자원이기 때문에, 내 코드를 복사하고 붙이기 전에 참고하도록 요구할 것이다.Devise Repo .
기본적인 사용자 인증을 해보겠습니다.
첫 번째 단계 - 모델
gem 'Devise'
에 추가한 다음bundle 설치를 실행합니다.rails generate devise:install
를 운행한다.이 때 콘솔에 많은 설명이 나타날 것이다.이 설명에서는 각 환경의 Desive mailer에 대한 기본 URL 옵션을 설정해야 합니다.예를 들어, 개발 환경에서는 config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
rails generate devise user
을 생성한 후 마이그레이션rails db:migrate
을 실행합니다.spring stop
도 포함해야 한다.주의해야 할 것은, 당신의 모델에 재미있는 코드가 추가될 것입니다.구체적으로 모델의 Desive 방법에는 모듈을 구성하는 데 사용할 수 있는 옵션이 있습니다.보아하니
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable :validatable
2단계-코스
config/routes.rb
파일에 다음 행을 추가합니다.devise_for :users
devise_scope
블록에 포장할 수 있습니다.예를 들면 다음과 같습니다.devise_scope :user do
post 'sign_in', to 'devise/sessions#create'
end
3단계 - 컨트롤러
class SessionsController < Devise::SessionsController
# sign in
def create
if @user.valid_password?(sign_in_params[:password])
sign_in "user", @user
render json: {
messages: "Signed In Successfully",
is_success: true,
data: {user: @user}
}, status: :ok
else
render json: {
messages: "Signed In Failed - Unauthorized",
is_success: false,
data: {}
}, status: :unauthorized
end
end
private
def sign_in_params
params.require(:sign_in).permit :email, :password
end
def load_user
@user = User.find_for_database_authentication(email: sign_in_params[:email])
if @user
return @user
else
render json: {
messages: "Cannot get User",
is_success: false,
data: {}
}, status: :failure
end
end
end
현재 우리는 이미 모델, 루트, 컨트롤러를 설치하여 사용할 수 있다rails s
그리고 우체부로 이 단점들을 테스트한다.(또는 CLI 고집쟁이에게 곱슬머리 제공)Postman에서 요청한 JSON 객체는 다음과 같습니다.
{
"user":{
"email": "[email protected]",
"password" : "foobar123"
}
}
(이 가정은 데이터베이스에 사용자의 전자메일과 비밀번호가 위와 같다는 것을 가정하십시오.)localhost:3000/sign POST 요청을 보내면 200-OK의 회답을 받을 수 있습니다.
기본적으로 그렇습니다.사용자 인증 기능을 제공하기 위해 응용 프로그램에서 실행하도록 설계되었습니다.
이제 다른 모델의 접근 권한을 로그인한 사용자로 제한하는 것만 남았습니다.내가 데시브한테 전화한 스위스 군도 기억나?그것은 많은 조수 방법을 덧붙였는데, 그 중 하나는
:authenticate_user!
이다따라서 사용자가 방문하기 전에 권한을 부여받아야 하는 모든 모델에 대해 다음과 같은 추가만 하면 된다.
before_action :authenticate_user!
컨트롤러에 있습니다.이것 또한 특정한 변화로 확대할 수 있다. 예를 들어
before_action :authenticate_user!, only: [:create]
이것은 창설 작업을 로그인한 권한 있는 사용자만 제한합니다.희망은 Desive gem을 사용하기 시작하는 데 필요한 지식을 포함한다.그러나 그것도 모자라서 다시 읽는다docs.
주의 사항
devise_token_auth
here
Reference
이 문제에 관하여(디자인, Rails 사용자 인증 스위스 군도.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/w3ndo/devise-the-swiss-army-knife-of-rails-user-authentication-3jji텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)