[RUBY] Implémentez la fonction de connexion dans Rails simplement avec le nom et le mot de passe (1)

introduction

Implémentez-le plus simplement que la connexion par e-mail et mot de passe utilisée dans le didacticiel sur les rails. N'utilisez pas de pierres précieuses telles que la devise.

supposition

Cible

Ici, connectez-vous en utilisant le nom et le mot de passe de la table Room.

procédure

MacBook % rails g model Room name:string

db/migrate/Horodatage.create_rooms.rb


class CreateRooms < ActiveRecord::Migration[6.0]
  def change
    create_table :rooms do |t|
      t.string :name, null: false

      t.timestamps
    end
  end
end
MacBook % rails db:migrate

app/models/room.rb


class Room < ApplicationRecord
  validates :name, presence: true, length: { maximum: 50 }
  has_secure_password
end

--Créez une migration qui ajoute une colonne password_digest et appliquez la migration

MacBook % rails generate migration add_password_digest_to_rooms password_digest:string
MacBook % rails db:migrate

--Ouvrez Gemfile, décommentez gem'bcrypt 'et installez

Gemfile


~
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
~

app/models/room.rb


class Room < ApplicationRecord
  validates :name, presence: true, length: { maximum: 50 }
  has_secure_password
  validates :password, presence: true, length: { minimum: 6 }
end

--Vérifiez si l'instance peut être créée et enregistrée dans la base de données avec la console Rails

Un terminal différent de celui qui a démarré le serveur


MacBook % rails c  
~
irb(main):001:0> @room = Room.new(name:"tokyoroom",password:"password",password_confirmation:"password")
   (2.2ms)  SET NAMES utf8mb4,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
=> #<Room id: nil, name: "tokyoroom", created_at: nil, updated_at: nil, password_digest: [FILTERED]>
irb(main):002:0> @room.save
   (0.7ms)  BEGIN
  Room Create (3.3ms)  INSERT INTO `rooms` (`name`, `created_at`, `updated_at`, `password_digest`) VALUES ('tokyoroom', '2020-09-23 07:26:30.787094', '2020-09-23 07:26:30.787094', '$2a$12$SmCtpmRZn0M5BMtuT6BmAOKO.DMAmMOIYSXoHlxDrSbA2AQcAYnMC')
   (5.0ms)  COMMIT
=> true

Suite [2]

(https://qiita.com/yongjugithub/items/65fcdf73e42857297321)

Les références

https://railstutorial.jp/chapters/modeling_users?version=5.1#sec-adding_a_secure_password

Recommended Posts

Implémentez la fonction de connexion dans Rails simplement avec le nom et le mot de passe (1)
Implémentez la fonction de connexion dans Rails simplement avec juste un nom et un mot de passe (2)
Implémentez la fonction de connexion simplement avec le nom et le mot de passe dans Rails (3)
Implémenter une fonction de connexion simple dans Rails
Implémenter la fonction d'application dans Rails
Comment implémenter le processus d'authentification en spécifiant le nom d'utilisateur et le mot de passe dans Spring Boot
[Ruby on Rails] Implémenter la fonction de connexion par add_token_to_users avec l'API
Implémenter la fonction de téléchargement CSV dans Rails
Implémenter la fonction d'enregistrement des utilisateurs et la fonction d'enregistrement de l'entreprise séparément dans Rails concevoir
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
Fonction de publication implémentée par communication asynchrone dans Rails
Mettre en œuvre la fonction de classement par étoiles en utilisant Raty dans Rails 6
Implémenter des itérations dans View en rendant une collection [Rails]
Markdown implémenté dans Rails
Comment implémenter la connexion invité en 5 minutes sur le portefeuille de rails
Implémenter la fonction de recherche de publication dans l'application Rails (méthode where)
[Rails] Implémentez la fonction d'enregistrement / suppression de carte de crédit dans PAY.JP
[Rails] Implémenter la fonction de recherche d'utilisateurs
Implémenter l'authentification LTI dans Rails
Avec Spring Boot, hachez le mot de passe et utilisez l'enregistrement des membres et la sécurité Spring pour implémenter la fonction de connexion.
[Rails] Implémenter la fonction de publication d'images
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
Les rails 6 (avec Webpacker en standard) implémentent la fonction de classement par étoiles
Ajoutez une fonction de recherche dans Rails.
Activer jQuery et Bootstrap dans Rails 6 (Rails 6)
[rails] Implémentation de l'écran de connexion dans la devise
Implémenter la fonction PHP implode en Java
Implémenter un formulaire de contact dans Rails
Supprimez les "actifs" et les "turbolinks" dans "Rails6".
Fonction CRUD et MVC dans Rails
[Ruby on Rails] Comment se connecter avec seulement votre nom et mot de passe en utilisant le bijou
Comment mettre en œuvre un diaporama en utilisant Slick in Rails (un par un et plusieurs par un)
"Professeur, je souhaite implémenter une fonction de connexion au printemps" ① Hello World
Comment implémenter la fonctionnalité de recherche dans Rails
Comment changer le nom de l'application dans les rails
Essayez d'implémenter une fonction de connexion avec Spring-Boot
Créez quand même une fonction de connexion avec Rails
Comment implémenter la fonctionnalité de classement dans Rails
Implémenter des transitions de boutons à l'aide de link_to dans Rails
Implémentation de la fonction de connexion par Spring Security (securityConfig)
Un mémo pour créer un formulaire simple en utilisant uniquement HTML et CSS dans Rails 6
[Rails] Donnez cet article à vous qui avez recherché "login nom de devise"
Analyser en Java les chaînes de date et d'heure formatées par la fonction asctime du langage C