[RUBY] [Mit einer Erklärung, warum dies zu tun ist] So verhindern Sie, dass andere Benutzer mit der CRUD-App von Rails mit Authentifizierungsfunktion bearbeiten

Einführung

Mein Name ist yuki. Dank DMMWEBCAMP arbeite ich jetzt als WEB-Ingenieur, versammle meine Freunde, um Dienstleistungen zu entwickeln, unterrichte Programmieren als Heimlehrer und genieße jeden Tag mein Ingenieurleben.

Wir bieten auch Support- und Fehlerfragen für diejenigen, die unerfahrene Personen ansprechen. Wenn Sie interessiert sind, wenden Sie sich bitte an DM.

Dieses Mal werde ich die Funktion erläutern, mit der andere Ihren eigenen Beitrag nicht bearbeiten können. Dies ist in CRUD-Apps mit Authentifizierungsfunktion üblich.

Annahme

Endziele

Implementierung einer Funktion zum Umleiten auf eine Listenseite usw., wenn sich das Poster und der Editor bei der Eingabe der URL zum Bearbeiten des Posts in Solid unterscheiden

# post/1/Geben Sie eine URL ein, z. B. Bearbeiten
#Wenn das Poster und der Editor unterschiedlich sind/Zu Posts umleiten

① Erstellen Sie eine Methode, die beim Bearbeiten immer erfolgreich ist

"Wenn Sie versuchen, den Beitrag eines anderen zu bearbeiten, leiten Sie ihn um" bedeutet, dass Sie beim Bearbeiten versuchen müssen, diese Funktion aufzurufen. Lassen Sie uns zunächst eine Situation erstellen, in der ein bestimmter Prozess beim Bearbeiten oder Aktualisieren gelesen werden kann.

posts_controller.rb


class PostssController < ApplicationController
  before_action :correct_user, only: [:edit, :update]

  #Unterlassung

  def edit
    @book = Post.find(params[:id])
  end
end

before_action wird in diesem Artikel leicht verständlich erklärt. Mit anderen Worten, die angegebene Methode wird immer vor der angegebenen Aktion ausgeführt.

Dieses Mal rufen wir vor dem Bearbeiten und Aktualisieren… korrigierter_Benutzer… eine Methode auf, die nach dem richtigen Benutzer sucht.

② Definieren Sie die aufzurufende Methode

posts_controller.rb



#Unterlassung
private
  def correct_user
    @post = Post.find(params[:id]) #Identifizieren Sie den Beitrag anhand der ID
    @user = @post.user             #Identifizieren Sie den Benutzer, der dem identifizierten Beitrag zugeordnet ist, und@Benutzer eingeben
    if current_user != @user       #Mit dem aktuell angemeldeten Benutzer (Editor)@Wenn der Benutzer (Poster) anders ist
      redirect_to posts_path       #Zur Listenseite umleiten
    end
  end

Wie ich im Kommentar geschrieben habe, sieht es so aus.

Da es viele Artikel gab, die durch Einfügen implementiert werden konnten, habe ich versucht, "warum es passiert" zusammenzufassen. Wir hoffen auf Ihre Referenz.

Recommended Posts

[Mit einer Erklärung, warum dies zu tun ist] So verhindern Sie, dass andere Benutzer mit der CRUD-App von Rails mit Authentifizierungsfunktion bearbeiten
[Grobe Erklärung] So trennen Sie den Betrieb der Produktionsumgebung und der Entwicklungsumgebung mit Rails
So pushen Sie mit Rails entwickelte Apps an Github
So verhindern Sie, dass editTextPreference von android PreferenceFragmentCompat beschädigt wird
So geben Sie db beim Erstellen einer App mit Rails an
So verhindern Sie, dass vergangene Daten in Rails-Formularen eingegeben werden
[Schienen] So verhindern Sie den Bildschirmübergang
So dekorieren Sie CSS auf Rails6 form_with (Hilfs-) Optionsfeldern
So greifen Sie mit der TCP-Funktion von Spring Integration direkt auf Socket zu
Strict_loading-Funktion zur Unterdrückung des Auftretens von N + 1-Problemen, die von Schienen hinzugefügt wurden 6.1
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
SSH in Ubuntu von einem Terminal mit öffentlicher Schlüsselauthentifizierung
[Rails] So wenden Sie das in der Hauptanwendung verwendete CSS mit Administrate an
So implementieren Sie die E-Mail-Authentifizierungsfunktion zum Zeitpunkt der Benutzerregistrierung