Ruby on rails login

Рассмотрим пример реализации входа на сайт с помощью Ruby on Rails. Объясним, как работает система аутентификации и доступа к данным.

Логин в Ruby on Rails

Для создания логина в Ruby on Rails нам необходимо использовать стандартный гем Devise. Этот гем предоставляет нам все необходимые функции для создания логина, такие как аутентификация, авторизация, восстановление паролей и т.д. Для того, чтобы начать использовать Devise, нам необходимо установить гем в Gemfile:


gem 'devise'

Далее нам необходимо выполнить установку гема:


$ bundle install

После того, как гем установлен, нам необходимо выполнить генерацию файлов для настройки Devise. Для этого мы должны выполнить команду:


$ rails generate devise:install

Команда генерирует несколько файлов и добавляет их в проект. Один из них - это конфигурационный файл config/initializers/devise.rb, в котором мы можем настроить нашу аутентификацию. Кроме того, мы можем использовать генераторы для создания модели и контроллера для аутентификации:


$ rails generate devise User

Генератор создает модель пользователя User и добавляет к ней действия аутентификации. Мы также можем добавить к модели дополнительные поля, например, имя пользователя, адрес электронной почты и т.д.


class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  validates :username, presence: true, uniqueness: true
  validates :email, presence: true, uniqueness: true
end

Теперь мы готовы к добавлению логина в нашу веб-страницу. Для этого нам необходимо добавить форму в нашу веб-страницу:


<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
  <div class="field">
    <%= f.label :username %><br />
    <%= f.text_field :username, autofocus: true %>
  </div>

  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password, autocomplete: "off" %>
  </div>

  <% if devise_mapping.rememberable? -%>
    <div class="field">
      <%= f.check_box :remember_me %>
      <%= f.label :remember_me %>
    </div>
  <% end -%>

  <div class="actions">
    <%= f.submit "Войти" %>
  </div>
<% end %>

Готово! Теперь мы можем предоставить пользователям возможность входа в систему с помощью стандартной формы аутентификации.

Ответы (0)