Ruby on Rails에서 로그인 만들기
특정 페이지에 액세스하려면 사용자가 로그인해야 합니다. 이것은 간단한 로그인이며 사용자 역할 및 인증은 이 게시물에서 다루지 않습니다.
먼저 사용자가 로그인해야 하는 웹 사이트를 시연하는 간단한 페이지를 만듭니다.
페이지 만들기
관리자와 홈의 두 페이지를 만들겠습니다.
admin.html.erb
에서 home.html.erb
및 app/views/pages/
보기를 생성합니다. // app/views/pages/admin.html.erb
<h1>Admin Home</h1>
<p>app/views/pages/admin.html.erb</p>
// app/views/pages/home.html.erb
<h1>Home</h1>
<p>app/views/pages/home.html.erb</p>
이제
app/controllers/
에서 이러한 페이지에 대한 컨트롤러를 만듭니다. # app/controllers/pages_controller.rb
class PagesController < ApplicationController
def home
end
def admin
end
end
마지막으로 이러한 페이지에 대한 경로를 만듭니다.
# config/routes.rb
get "/admin" => "pages#admin", as: "admin"
root "pages#home"
페이지는 localhost를 확인하여 작동해야 합니다.
localhost:3000
에 대한 페이지는 app/views/pages/home.html.erb
이어야 하고 localhost:3000/admin
는 app/views/pages/admin.html.erb
입니다.로그인 만들기
이제 페이지가 완료되었으므로 로그인 시스템 구현을 시작합니다. devise gem을 사용하겠습니다. 간단한 로그인에 필요한 모든 것이 있습니다.
다음을 Gemfile에 추가하여 devise gem을 설치합니다.
gem 'devise'
그런 다음 번들 설치를 실행합니다.
터미널에서 이것을 실행하는 장치에 필요한 파일을 생성하십시오.
$ rails generate devise:install
If you're using rails 7 you may encounter an error. You may need to paste this code in your
config/initializers/devise.rb
:
config.navigational_formats = ['*/*', :html, :turbo_stream]
source
사용할 마이그레이션 파일을 만듭니다.
$ rails generate devise MODEL
MODEL
를 응용 프로그램 사용자에 사용되는 클래스 이름으로 바꿉니다(주로 User
를 사용하지만 Admin
일 수도 있음).그런 다음
rails db:migrate
를 실행합니다.관리자 페이지를 방문할 때 사용자가 로그인하도록 요구합니다.
app/controllers/pages
를 업데이트하면 됩니다.class PagesController < ApplicationController
before_action :authenticate_user!, only: :admin
def home
end
def admin
end
end
before_action :authenticate_user!
는 사용자가 로그인했는지 확인합니다. 모델에 따라 authenticate_MODEL!
로 변경해야 할 수도 있습니다. 예를 들어 장치 모델의 이름을 Admin
로 선택한 경우 authenticate_admin!
이어야 합니다.only: :admin
를 추가하면 관리자 작업(app/views/pages/admin.html.erb)에서만 작업이 수행됩니다.그렇게 해야 합니다! 서버를 다시 시작하고 확인하십시오!
링크 추가(선택 사항)
여기에 웹 사이트에 대한 로그인 및 로그아웃 링크를 추가하겠습니다.
_user_detail.html.erb
에서 파일app/views/shared/
을 생성합니다.// app/views/shared/_user_detail.html.erb
<% if user_signed_in? %>
<%= button_to("Log Out", destroy_user_session_path, method: :delete) %>
<% else %>
<%= link_to 'Log in', new_user_session_path %>
<% end %>
If you're using rails 7 logout button may not work properly you need to use this:
<%= button_to("Log Out", LOGOUT_PATH, method: :delete) %>
여기서 경로는 로그인 및 로그아웃입니다.
rails routes
를 실행하여 확인할 수 있습니다.user_signed_in?
는 고안의 도우미입니다. 사용자가 로그인했는지 여부에 따라 true 또는 false를 반환합니다. 이것은 devise 모델에 대해 선택한 이름에 따라 변경될 수 있습니다. Admin
를 선택한 경우 admin_signed_in?
이어야 합니다.app/views/pages/home.html.erb
및 app/views/pages/admin.html.erb
에 링크를 추가합니다.<%= render "shared/user_detail"%>
참조:
내 저장소here를 확인할 수 있습니다.
다시 게시하지 마십시오
Reference
이 문제에 관하여(Ruby on Rails에서 로그인 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jkevinbaluyot/create-login-in-ruby-on-rails-33ij텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)