Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Clearance를 사용하여 Rails에서 인증

Clearance는 Thoughtbot 팀이 구축한 이메일과 비밀번호를 사용하는 간단한 인증 시스템입니다. 독단적인 기본값이 있지만 재정의하기 쉽도록 고안되었습니다. 시스템은 적극적으로 유지 관리되며 GitHub에서 후속 조치를 취할 수 있습니다.

이 튜토리얼에서는 Clearance를 Rails 애플리케이션에 통합하는 방법을 볼 것입니다. 우리는 미니어처 응용 프로그램을 사용할 것입니다. 의 시작하자!

시작하기

Rails 애플리케이션을 생성하는 것으로 시작합니다. 이 가이드의 목적을 위해 내 이름을 tutsplus-clearance로 지정하겠습니다. .

rails new tutsplus-clearance -T

마법을 부릴 것입니다.

애플리케이션을 보기 좋게 만들려면 부트스트랩이 필요합니다. Gemfile에 Bootstrap gem 추가 .

#Gemfile...gem 'bootstrap-sass'

bundle install을 실행하여 gem을 설치합니다. .

이제 application 수정 . scss 다음과 같이 표시됩니다.

#app/assets/stylesheets/application.scss@import 'bootstrap-sprockets';@import 'bootstrap';

통관 설정

Gemfile을 엽니다. Clearance gem을 추가합니다.

#Gemfilegem '통관'

이제 gem을 설치하세요.

bundle install

이 시점에서 생성기 명령을 실행하여 clearance를 설치합니다. .

rails generate clearance:install

그러면 터미널에 아래와 같은 출력이 생성됩니다.

config/initializers/clearance.rb 삽입 app/controllers/application_controller.rb 생성 app/models/user.rb 생성 db/migrate/20161115101323_create_users.rb******************** 생성 ************************************************** **************다음 단계:1. 이메일에 전체 URL을 생성하도록 메일러를 구성합니다. # config/environments/{development,test}.rb config.action_mailer.default_url_options ={ host:'localhost:3000' } 프로덕션 환경에서는 앱의 도메인 이름이어야 합니다.2. 사용자 세션을 표시하고 깜박입니다. 예를 들어 애플리케이션 레이아웃에서 <% if signed_in? %> 다음으로 로그인:<%=current_user.email %> <%=button_to '로그아웃', sign_out_path, 방법::delete %> <% else %> <%=link_to '로그인', sign_in_path %> <% end %> 
<% flash.each do |키, 값| %>
<%=값 %>
<% 끝 %>
3. 마이그레이션:rake db:migrate**************************************** ***********************************

명령을 실행하면 응용 프로그램에 몇 개의 파일이 생성되었습니다. 그러한 파일 중 하나는 config/initializers에서 찾을 수 있는clearance.rb입니다. 예배 규칙서. A User 모델도 생성되었으며 다음과 같은 마이그레이션 파일도 있습니다.

클래스 CreateUsers  

출력에 따르면 가장 먼저 해야 할 일은 구성 환경을 편집하는 것입니다. 그렇게 하려면 config/environments/development.rb로 이동하십시오. end 바로 위에 아래 줄을 추가합니다. 구분자.

... config.action_mailer.default_url_options ={ 호스트:'localhost:3000' }종료

다음으로 config/initializers/clearance.rb로 이동합니다. 그것을 편집하고 거기에있을 때 발신자 이메일 주소를 기본값에서 선택한 주소로 변경하십시오. 이것은 파일을 열 때 표시되는 것입니다.

#config/initializers/clearance.rbClearance.configure do |config| config.mailer_sender ="[email protected]"끝

다음 코드 조각을 붙여넣고 요구 사항에 맞게 구성하여 기본 구성을 재정의할 수 있습니다.

#config/initializers/clearance.rbClearance.configure do |config| config.allow_sign_up =true config.cookie_domain =".example.com" config.cookie_expiration =람다 { |쿠키| 1.year.from_now.utc } config.cookie_name ="remember_token" config.cookie_path ="/" config.routes =true config.httponly =false config.mailer_sender ="[email protected]" config.password_strategy =클리어런스::PasswordStrategies::BCrypt config.redirect_url ="/" config.secure_cookie =false config.sign_in_guards =[] config.user_model =Userend

명령을 실행하여 데이터베이스를 마이그레이션하십시오.

rake db:migrate

PagesController를 엽니다. index를 추가합니다. 행동.

#app/controllers/pages_controller.rbclass PagesController  

다음으로 index에 대한 보기를 만듭니다. 방금 만든 작업입니다.

아래에 코드 스니펫을 추가하세요.

#app/views/pages/index.html.erb

Tutsplus Clearance

Clearance 페이지에 오신 것을 환영합니다.

경로 수정:

#config/routes.rbRails.application.routes.draw 루트:"pages#index"end

_navigation.html.erb라는 이름의 부분 생성 layouts 내부 예배 규칙서. 이것은 애플리케이션의 탐색과 관련된 모든 것을 처리하는 데 사용됩니다.

다음 코드를 붙여넣고 저장하세요.

#app/views/layouts/_navigation.html.erb
<% flash.each do |키, 값| %>
<%=값 %>
<% 끝 %>

액세스 제한 

Clearance를 사용하면 애플리케이션에서 선택한 특정 페이지에 대한 제한된 액세스를 만들 수 있습니다. 어떻게 되는지 봅시다.

new 보기 만들기 app/views/pages의 작업 , 파일 이름은 new.html.erb여야 합니다. . 아래 코드를 붙여넣으세요.

#app/views/pages/new.html.erb

제한된 페이지

이 페이지는 인증된 사용자로 제한됩니다. 이 페이지를 볼 수 있다면 슈퍼스타임을 의미합니다!

이제 config/routes.rb에 아래 줄을 추가해야 합니다. .

#config/routes.rb... 리소스 :페이지, 전용::새로...

마지막으로 PagesController로 이동합니다. 아래에 있는 것과 같이 만드십시오.

#apps/controllers/pages_controller.rbclass PagesController  

위의 코드에서는 Clearance 도우미인 require_login을 사용하고 있습니다. , new에 대한 액세스를 제한합니다. 동작. 작동 방식을 보려면 rails server를 실행하여 레일 서버를 시작하세요. 터미널에서. 브라우저에서 https://locahost:3000/pages/new로 이동합니다. 그러면 로그인 페이지로 리디렉션됩니다.

Clearance는 또한 액세스를 제어하는 ​​데 사용할 수 있는 라우팅 제약 조건을 제공합니다.

#config/routes.rbRails.application.routes.draw do 제약 조건 Clearance::Constraints::SignedOut.new 루트 수행:'pages#index' 종료 제약 Clearance::Constraints::SignedIn.new 루트 수행:"pages#new', as::signed_in_root endend

위의 코드에서 인증된 사용자에 대해 다른 경로가 생성되었습니다.

정리 기본값 무시

Clearance를 사용하기 시작하면 보이지 않는 곳에서 많은 일들이 발생합니다. 애플리케이션의 사양에 따라 다르게 사용자 정의하고 싶을 때가 올 수 있습니다. Clearance를 사용하면 함께 제공되는 기본 구성을 재정의할 수 있습니다.

Clearance 경로를 무시(또는 생성)하려면 터미널에서 이 명령을 실행하십시오.

rails generate clearance:routes

이제 경로 파일이 다음과 같아야 합니다.

#config/routes.rbRails.application.routes.draw do resources :passwords, controller:"clearance/passwords", only:[:create, :new] resource :session, controller:"clearance/sessions", only :[:create] 자원 :users, 컨트롤러:"clearance/users", only:[:create] do resource :password, 컨트롤러:"clearance/passwords", only:[:create, :edit, :update] end get "/sign_in" => "clearance/sessions#new", "sign_in" delete "/sign_out" => "clearance/sessions#destroy", "sign_out" get "/sign_up" => "clearance/users" #new", as:"sign_up" 루트:"pages#index" 자원:페이지, 전용::newend

이 명령은 config.routes도 설정합니다. config/initializers/clearance.rb에서 false로 설정 파일. 이것은 방금 생성된 사용자 정의 파일이 사용된다는 것을 의미합니다.

수정할 보기를 생성하려면 다음을 실행하십시오.

rails generate clearance:views

생성될 파일 중 일부는 다음과 같습니다.

 app/views/passwords/create.html.erb app/views/passwords/edit.html.erb app/views/passwords/new.html.erb app/views/sessions/_form.html.erb app/views /sessions/new.html.erb app/views/users/_form.html.erb app/views/users/new.html.erb config/locales/clearance.en.yml

터미널에 app/views/layouts/application.html.erb를 덮어쓸지 묻는 메시지가 표시됩니다. 파일. 원하는 옵션을 선택하세요.

레이아웃

기본적으로 Clearance는 애플리케이션의 기본 레이아웃을 사용합니다. Clearance가 뷰를 렌더링할 때 사용하는 레이아웃을 변경하려면 이니셜라이저에서 레이아웃을 지정하기만 하면 됩니다.

클리어런스::PasswordsController.layout "my_passwords_layout" 클리어런스::SessionsController.layout "my_sessions_layout" 클리어런스::UsersController.layout "my_admin_layout"

도우미 방법

Clearance는 controllers에서 사용할 수 있는 도우미 메서드를 제공합니다. , viewshelpers . 이러한 방법에는 signed_in?이 포함됩니다. , signed_out?current_user . 예:

<로그인된 경우 %? %> <%=current_user.email %> <%=button_to "로그아웃", sign_out_path, 방법::delete %><% else %> <%=link_to "로그인", sign_in_path %><% 종료 %> 

결론

Clearance는 인증과 관련하여 많은 것을 제공하므로 다음 프로젝트에서 시도하십시오. GitHub 페이지에서 자세히 알아볼 수 있습니다.