・ Le tutoriel Rails est la 4ème édition ・ Cette étude est le 3e tour (2e tour après le chapitre 9) ・ L'auteur est un débutant qui a fait tout Progate
・ Si vous le lisez, vous ne le comprendrez pas. ・ Recherchez et résumez les termes que vous ne comprenez pas (en bas de l'article, glossaire). ・ Plongez dans ce que vous ne comprenez pas. ・ Travaillez sur tous les exercices. ・ Ne copiez pas le code autant que possible.
Le chapitre 8 est le développement du système de connexion et d'authentification, la troisième étape, et le mécanisme de connexion de base sera mis en œuvre. (Nous le développerons plus avant au chapitre 9) Les termes des technologies de l'information sont dispersés, alors procédons tout en comprenant la signification et le fonctionnement de chaque terme. La BGM d'aujourd'hui a un goût différent. Bande originale de l'anime télévisé "Yurukan △" Ça devient enfin plus frais. C'est la saison parfaite pour le camping. Allons rafraîchir les yeux et la tête fatiguée du codage.
2. En connectant le résultat de l'exécution des rails routes et la commande grep à l'aide de la fonction pipe du terminal, seuls les itinéraires liés à la ressource Users peuvent être affichés. De même, affichons uniquement les résultats de la ressource Sessions. Combien de ressources de sessions disposez-vous actuellement? Conseil: Si vous ne savez pas comment utiliser les tubes et grep, consultez la section Apprendre suffisamment de ligne de commande pour être dangereux sur Grep. → Fonction pipe: (Commande) | (Commande) Une fonction qui connecte des commandes entre elles. Commande grep: une commande pour rechercher une chaîne de caractères dans un fichier. Donc ci-dessous. Est-il inévitable que l'inscription soit incluse?
$ rails routes | grep users#
signup GET /signup(.:format) users#new
POST /signup(.:format) users#create
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
$ rails routes | grep sessions#
login GET /login(.:format) sessions#new
POST /login(.:format) sessions#create
logout DELETE /logout(.:format) sessions#destroy
>> user = nil
=> nil
>> !!(user && user.authenticate("foobar"))
=> false
>> user = User.first
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? [["LIMIT", 1]]
=> #<User id: 1, name: "Rails Tutorial", email: "[email protected]", created_at: "2020-09-12 09:09:50", updated_at: "2020-09-12 09:09:50", password_digest: "$2a$10$hrOEzw0faSd4yurmH8bQJOnggeNnUqTZg33yE9g7Tnk...">
>> !!(user && user.authenticate("matigatteruyo"))
=> false
>> !!(user && user.authenticate("hogehoge"))
=> true
>> User.find_by(id: 8)
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 8], ["LIMIT", 1]]
=> nil
2.Comme avant, cette fois:user_Créons un hachage de session avec une clé d'identifiant. Annonce 8.Suivez les étapes décrites dans 17.||=Vérifions également que l'opérateur fonctionne. → Ci-dessous
>> session = {}
=> {}
>> session[:user_id] = nil
=> nil
>> @current_user ||= User.find_by(id: session[:user_id])
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]]
=> nil
>> session[:user_id] = User.first.id
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? [["LIMIT", 1]]
=> 1
>> @current_user ||= User.find_by(id: session[:user_id])
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
=> #<User id: 1, name: "Rails Tutorial", email: "[email protected]", created_at: "2020-09-12 09:09:50", updated_at: "2020-09-12 09:09:50", password_digest: "$2a$10$hrOEzw0faSd4yurmH8bQJOnggeNnUqTZg33yE9g7Tnk...">
>> @current_user ||= User.find_by(id: session[:user_id])
=> #<User id: 1, name: "Rails Tutorial", email: "[email protected]", created_at: "2020-09-12 09:09:50", updated_at: "2020-09-12 09:09:50", password_digest: "$2a$10$hrOEzw0faSd4yurmH8bQJOnggeNnUqTZg33yE9g7Tnk...">
2. Essayez de vous reconnecter et constatez que la disposition de l'en-tête a changé. Ensuite, redémarrez votre navigateur et assurez-vous que vous êtes de nouveau dans l'état non connecté. Remarque: Si vous activez la fonction Restore Closed state de votre navigateur, les informations de session peuvent également être restaurées. Si cette fonctionnalité est activée, n'oubliez pas de la désactiver (colonne 1.1). → Essayez-le.
Le code de la méthode digest ici est-il honnête? ?? Statut. Que signifie écrire deux:? Il sortait du front. Si vous le recherchez, la notation PHP sort, est-ce bon pour le même sens? Les assertions du test sont résumées dans le glossaire.
Vous avez défini diverses méthodes d'assistance dans ce chapitre. Écrivez votre code tout en sachant où vous le définissez pour utilisation. Que ce soit pour l'utiliser dans le contrôleur ou dans le test.
2. Utilisez la fonction de l'éditeur de texte que vous utilisez actuellement pour vérifier si vous pouvez mettre en commentaire la liste 8.25 à la fois. Exécutez également la suite de tests avant et après la mise en commentaire et assurez-vous qu'elle devient rouge lorsque vous commentez et verte lorsque vous annulez le commentaire. Conseil: n'oubliez pas de sauvegarder le fichier après avoir commenté. En outre, pour la fonction de commentaire de l'éditeur de texte, consultez Commenter le didacticiel de l'éditeur de test. → (Pour Mac) Appuyez sur commande + A pour tout sélectionner, commande + / pour commenter. Bien sûr, ce sera ROUGE / VERT avant et après les commentaires.
2. Vérifiez le contenu des cookies et confirmez que la session a été supprimée normalement après la déconnexion. → Il a été supprimé.
-Sauvegarde de l'état temporaire avec la méthode de session. -Le modèle d'utilisateur d'enregistrement actif n'étant pas utilisé pour la connexion, le message d'erreur associé ne peut pas être utilisé. -Afficher les messages flash uniquement pour les pages rendues avec flash.now. ・ Form_for semble être remplacé par form_with, donc pour référence. ・ Utilisez correctement render et redirect_to. -Afficher un message flash. -Tester l'implémentation autour de la connexion dans le test d'intégration (si la connexion / déconnexion est possible, l'en-tête est commuté)
Ce chapitre s'est poursuivi sans erreurs majeures. Nous présenterons un mécanisme avancé à partir du prochain chapitre 9. Enfin, nous entrerons dans le chapitre qui n'a qu'un tour! Soyons excités!
⇨ Allez au chapitre 9! ⇦ Cliquez ici pour le chapitre 7 Cliquez ici pour les conditions préalables et le statut de l'auteur pour l'apprentissage
· Protocole sans état Échange indépendant d'informations qui ne maintient pas l'état. Si vous le comparez à la fonction de connexion, si vous fermez le navigateur puis entrez à nouveau, vous serez à nouveau connecté.
· Session Une série de communications (de la connexion à la déconnexion, etc.). Sur le site, c'est l'identifiant qui est inscrit dans le cookie du navigateur lors de votre première visite.
· Biscuit Protocole de communication qui gère l'état entre un serveur Web et un navigateur Web dans HTTP, et les informations stockées dans le navigateur Web qui y est utilisé. Il est utilisé dans les paniers d'achat et les fonctions de connexion sur les sites EC. Vous pouvez l'effacer des paramètres du navigateur, en pensant qu'il s'est accumulé.
・ Assert_redirected_to Testez si la destination de redirection appelée immédiatement avant cette assertion correspond à la destination de redirection ci-dessous.
・ Follow_redirect! En fait, passez à cette page. Utilisé lors du test d'autres éléments à destination.
Recommended Posts