Ruby on Rails의 가장 기본적인 사용자 등록 및 로그인 기능을 위한 자습서

Rails에서 사용자 등록과 로그인 기능을 실현하는 것은 매우 편리하다. 예를 들어 Devise와 같은 완전한 기능을 실현하는gem 확장 패키지를 사용할 수 있다.Rails 자체의 has_를 사용할 수도 있습니다secure_password는 이미 만들어진 것입니다.다음은 has_를 사용해 보도록 하겠습니다.secure_password는 사용자 등록과 로그인 기능을 실현합니다.
준비 작업
항목을 만들려면 다음과 같이 하십시오.

rails new user_login
has_secure_password에서 암호화된 기능은 bcrypt를 사용해야 하기 때문에 프로젝트에서 bcryptgem 패키지를 사용해야 합니다.프로젝트 디렉토리에 들어가서 Gemfile 파일을 수정하려면 다음과 같이 하십시오.

# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'
저장 후 종료,bundle install 명령을 실행하여 새로 사용하는gem 패키지를 설치합니다.
사용자 모듈 만들기
사용자 정보를 조작하고 관리하려면 먼저 사용자의 데이터 테이블과 모델을 저장해야 합니다.

rails g model user name:string password_digest:string
password_digest 이 필드는 암호화가 혼동된 암호열을 저장하는 데 사용되며, 다른 이름으로 변경할 수 없습니다. 그렇지 않으면has_를 정상적으로 사용할 수 없습니다secure_password에서 제공하는 기능입니다.
그리고 사용자 모듈에has_secure_password 기능:

# app/models/user.rb
class User < ActiveRecord::Base
 has_secure_password
end
사용자 데이터 테이블을 만들려면 다음과 같이 하십시오.

rake db:migrate
등록 기능 구현
사용자 등록을 처리하는 Applicant(신청자) 컨트롤러를 만듭니다.

rails g controller applicants new create
Applicants 컨트롤러는 다음과 같은 두 가지 방법을 제공합니다.
  • new: 등록 인터페이스를 처리하는 데 사용됩니다
  • create: 등록 정보를 저장하는 데 사용합니다
  • 위에서 명령한 컨트롤러 방법은 기본적으로 get 요청을 사용합니다.등록 정보를 저장하는create 방법은post 요청을 사용합니다.그래서 config/routes가 필요합니다.rb에서 다음과 같이 수정합니다.
    
    post 'applicants/create'
    
    등록 디렉터 기능 완료:
    
    # app/controllers/applicants_controller.rb
    
    class ApplicantsController < ApplicationController
     def new
      @user = User.new
     end
    
     def create
      @user = User.create(user_params)
      if @user.save
       redirect_to :sessions_new
      else
       render "new"
      end
     end
    
     private
      def user_params
       params.require(:user).permit(:name, :password, :password_confirmation)
      end
    end
    
    
    등록 인터페이스 기능 완료:
    
    <!-- app/views/applicants/new.html.erb -->
    
    <h1> </h1>
    
    <% if @user.errors.any? %>
    <ul>
      <% @user.errors.full_messages.each do |message| %>
      <li><%= message %></li>
      <% end %>
    </ul>
    <% end %>
    
    <%= form_for @user, url: :applicants_create do |f| %>
      <p>
        <%= f.label :name %>
        <%= f.text_field :name %>
      </p>
    
      <p>
        <%= f.label :password %>
        <%= f.password_field :password %>
      </p>
    
      <p>
        <%= f.label :password_confirmation %>
        <%= f.password_field :password_confirmation %>
      </p>
    
      <p><%= f.button " " %></p>
    <% end %>
    
    
    이렇게 하면 간단하게 등록 기능을 실현할 수 있다.
    로그인 기능 구현
    Session(세션) 컨트롤러를 생성하여 사용자 로그인 및 종료를 처리합니다.
    
    rails g controller sessions new create
    
    세션 컨트롤러에서 기본적으로 두 가지 방법을 만들었습니다.
  • new: 로그인 인터페이스를 처리하는 데 사용됩니다
  • create는 로그인 프로세스를 처리하는 데 사용됩니다
  • 등록과 마찬가지로create의 기본 루트를post로 수정해야 합니다.
    
    # config/routes.rb
    
    post 'sessions/create'
    
    
    세션 컨트롤러의 기능을 완료하려면 다음과 같이 하십시오.
    
    # app/controllers/sessions_controller.rb
    
    class SessionsController < ApplicationController
     def new
     end
    
     def create
      user = User.find_by(name: user_params[:name]).try(:authenticate, user_params[:password])
      if user
       render plain: sprintf("welcome, %s!", user.name)
      else
       flash.now[:login_error] = "invalid username or password"
       render "new"
      end
     end
    
     private
      def user_params
       params.require(:session).permit(:name, :password)
      end
    end
    
    
    세션 로그인 인터페이스 완료:
    
    <!-- app/views/sessions/new.html.erb -->
    
    <h1> </h1>
    
    <% if flash[:login_error] %>
      <p><%= flash[:login_error] %></p>
    <% end %>
    
    <%= form_for :session, url: :sessions_create do |f| %>
    
      <p>
        <%= f.label :name %>
        <%= f.text_field :name %>
      </p>
    
      <p>
        <%= f.label :password %>
        <%= f.password_field :password %>
      </p>
    
      <p><%= f.button " " %></p>
    
    <% end %>
    

    좋은 웹페이지 즐겨찾기