[RUBY] [Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails

Beachten Sie, dass ich Schwierigkeiten hatte, die Authentifizierungsfunktion in Rails zu implementieren

Arbeitsumgebung

Was ist Zauberei?

Eine Bibliothek zum Implementieren von Authentifizierungsfunktionen in Rails. In ähnlicher Weise ist das Entwickeln eine der Authentifizierungsfunktionen, aber die Zauberei ist einfacher und anpassbarer. Klicken Sie hier, um den Github des Zauberers anzuzeigen

Montagevorgang

Installation von Zauberei

Gemfile


gem 'sorcery'

Terminal


$ bundle install

Generieren Sie ein Benutzermodell und eine Migrationsdatei

Terminal


$ rails g sorcery:install

Durch Eingabe des obigen Befehls wird eine Migrationsdatei für das Benutzermodell und die Datenbank generiert. ・ App / models / user.rbConfig / initializers / sorcery.rbDb / migrate / yyyymmddhhmmss_sorcery_core.rb

Beschränken Sie die Datenbank

db/migrate/yyyymmddhhmmss_sorcery_core.rb


class SorceryCore < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      t.string :name, null: false
      t.string :email, null: false
      t.string :crypted_password
      t.string :salt, null: false

      t.timestamps null: false
    end

    add_index :users, :email, unique: true
  end
end

Nehmen wir diesmal an, wir haben Spalten für "Name", "E-Mail" und "Passwort".

――Der Grund für das Auferlegen von Einschränkungen besteht darin, dass das Ausführen von SQL oder das direkte Bearbeiten von Daten zu inkonsistenten Daten führen kann, die vom Modell verboten werden, wenn Sie keine Einschränkungen auf der Datenbankseite festlegen.

Terminal


$ rails db:migrate

Beschränken Sie das Benutzermodell

app/modeks/user.rb


class User < ApplicationRecord
  authenticates_with_sorcery!
  validates :name, presence: true, length: { maximum: 255 } #Beschränkungslänge mit Länge
  validates :email, presence: true, uniqueness: true #Beschränken Sie die Einzigartigkeit mit der Einzigartigkeit
  validates :password, length: { minimum: 3 }, if: -> { new_record? || changes[:crypted_password] }
  validates :password, confirmation: true, if: -> { new_record? || changes[:crypted_password] }
  validates :password_confirmation, presence: true, if: -> { new_record? || changes[:crypted_password] }
end

Benutzer-Controller generieren

Terminal


$ rails g controller users new create

app/controllers/users_controller.rb


class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to login_path
    else
      render :new
    end
  end

  private

  def user_params
    params.require(:user).permit(:name, :email, :password, :password_confirmation)
  end
end

Generierung des Benutzerregistrierungsbildschirms (neue Registrierung)

ruby:app/views/users/new.html.erb


<%= form_with model: @user, local: true do |f| %>
  <div class="form-group">
    <%= f.label :name %>
    <%= f.text_field :name, class: 'form-control' %>
  </div>
  <div class="form-group">
    <%= f.label :email %>
    <%= f.text_field :email, class: 'form-control' %>
  </div>
  <div class="form-group">
    <%= f.label :password %>
    <%= f.text_field :password, class: 'form-control' %>
  </div>
  <div class="form-group">
    <%= f.label :password_confirmation %>
    <%= f.text_field :password_confirmation, class: 'form-control' %>
  </div>
  <%= f.submit 'Anmeldung', class: 'btn btn-primary' %>
<% end %>
<div class='text-center'>
  <%= link_to 'Gehen Sie zur Anmeldeseite', login_path %>
</div>

Recommended Posts

[Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails
Erstellen Sie die Authentifizierungsfunktion in der Rails-Anwendung mit devise
Implementierung der Benutzerauthentifizierungsfunktion mit devise (2)
Implementierung der Benutzerauthentifizierungsfunktion mit devise (1)
Implementierung der Benutzerauthentifizierungsfunktion mit devise (3)
Erstellen Sie mit der Sitzungsfunktion einen Anmeldeauthentifizierungsbildschirm
Fügen Sie eine Suchfunktion in Rails hinzu.
[Rails] Implementierung der Benutzerrückzugsfunktion
Erstellen Sie eine neue App mit Rails
Erstellen Sie eine Filterfunktion mit Acts-as-Taggable-On
[Rails] Memo zur Implementierung der Kommentarfunktion
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
Rails Grundgerüst für die Implementierung der CRUD-Funktion
Erstellen Sie eine Anmeldefunktion mit Swift's Optional
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
[Rails] Ich werde die Prozedur zum Implementieren der Follow-Funktion mit form_with erklären.
[Rails] Implementierung der Suchfunktion mit Gem's Ransack
[Rails] Implementierung der Bildvergrößerungsfunktion mit Lightbox2
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
So erstellen Sie einfach ein Pulldown mit Rails
[Für Anfänger] Verfahren zum Erstellen eines Controllers mithilfe von Schienen
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 6. Zeigen Sie, erstellen Sie die Implementierung
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung im Rails 6 # 5-Controller und leiten Sie die Implementierung weiter
Ein Memo zum Erstellen eines einfachen Formulars, das nur HTML und CSS in Rails 6 verwendet
Erstellen Sie in Rails 6 einen Drag-and-Drop-Markdown-Editor (mit Active Storage, SimpleMDE und Inline-Anhang).
[Schienen] gem'payjp'implementierungsverfahren
Erstellen einer EC-Site mit Rails 5 ⑨ ~ Erstellen einer Warenkorbfunktion ~
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Vorbereitung"
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der "Seed Edition" der Vorfahren
Ich möchte eine Funktion in der Rails Console definieren
Erstellen Sie mit Rails 6 # 18 eine Bulletin-Board-API mit Zertifizierung und Autorisierung. ・ Implementierung des Endbenutzer-Controllers
Erstellen Sie eine Bulletin-Board-API mit Autorisierung in Rails 6 # 12 Assoziation von Benutzer und Beitrag
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Erstellungsformular"
[Rails DM] Erstellen wir eine Benachrichtigungsfunktion, wenn DM gesendet wird!
Implementierung der Rails-Sortierfunktion (angezeigt in der Reihenfolge der Anzahl der Gleichen)
Erstellen Sie ein Tomcat-Projekt mit Eclipse Pleiades All in One
Implementieren Sie die Benutzerregistrierungsfunktion und die Unternehmensregistrierungsfunktion separat in Rails devise
Implementieren Sie die Anwendungsfunktion in Rails
Implementierung der Fuzzy-Suchfunktion für Schienen
[Schienen] Implementieren Sie die Benutzersuchfunktion
Suchfunktion mit [Rails] Ransack
SNS-Authentifizierung mit Rails Google
Japanisieren Sie mit i18n mit Rails