Ruby on Rails의 가장 기본적인 사용자 등록 및 로그인 기능을 위한 자습서
준비 작업
항목을 만들려면 다음과 같이 하십시오.
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 컨트롤러는 다음과 같은 두 가지 방법을 제공합니다.
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
세션 컨트롤러에서 기본적으로 두 가지 방법을 만들었습니다.
# 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 %>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ruby의 단일 메소드 및 단일 클래스 상세 정보단일 방법 Ruby는 단일 객체에만 적용되는 단일 객체 추가 방법을 단일 방법이라고 합니다. 또한 위에서 사용한 정의 방법 외에 Object#define_를 통해singleton_method 방법으로 단일 방법 정의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.