[RUBY] Rails Direct-Hit-Verbot-Methode (Wechseln Sie nicht durch Eingabe einer URL zum Bearbeitungsbildschirm einer anderen Person.)

Was ist ein Direktschlagverbot?

Mit 7 Monaten Programmiererfahrung weiß ich immer noch nicht, ob rechts oder links. Während des Abschlusses der Aufgabe gab es die Bedingung "* Bitte so einstellen, dass nur Poster * bearbeitet und gelöscht werden können." Es wird gesagt, dass dies ** nicht direkt eingegeben werden darf ** (da Sie die Beiträge anderer Personen bearbeiten können, indem Sie ** direkt ** https: /// XXX / edit ** in der URL, ... ?).

スクリーンショット 2020-10-31 18.00.23.png

Nach einer Weile war es Zeit, ein Portfolio zu erstellen, und es stellte sich heraus, dass ich es direkt nach seiner Fertigstellung treffen konnte. Ich habe es versehentlich vergessen, deshalb werde ich die Methode des Verbots des direkten Schlagens als Memorandum aufzeichnen.

Wenn Sie nicht angemeldet sind, können Sie * "Nur Poster" * nicht beurteilen. Wie machen Sie also Apps und Homepages, die keine Anmeldefunktion haben? Es wird in Zukunft untersucht und gelernt. (Übrigens gab es eine Firma, die in Schwierigkeiten war, weil ich direkt zur Reservierungsseite fliegen konnte ...)

Obwohl es einfach ist, direkte Treffer zu verbieten, sollten Sie diese Funktion nicht vergessen, da es sehr schwierig sein kann, sie zu vergessen!

Code für das Verbot von direkten Treffern

Fügen Sie zunächst die Methode before_action zu application_controller hinzu.

application_controller.rb


class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?

Öffnen Sie als Nächstes die Controller-Seite, auf der Sie direkte Treffer verhindern möchten. (Wenn die Post-Seite beispielsweise Post heißt, post_controller.rb)

post_controller.rb


class PostsController < ApplicationController
    before_action :authenticate_user!
    before_action :correct_post,only: [:edit,:XXX]

Übrigens before_action: authenticate_user! Kann nur von angemeldeten Benutzern verwendet werden! ist was es bedeutet.

Vor_Aktion: Nur korrekter_Posten: Hinzufügen [: Bearbeiten ,: XX]. : XX fügt weitere Aktionen hinzu, die Sie nicht direkt ausführen möchten.

Fügen Sie außerdem den folgenden Code unter derselben post_controller.rb (über privat) hinzu.

post_controller.rb


def correct_post
        @post = Post.find(params[:id])
    unless @post.user.id == current_user.id
      redirect_to posts_path
    end
end

Beschreiben Sie für redirect_to posts_path das Linkziel, das übersprungen werden soll, wenn eine andere Person als das Poster direkt darauf trifft. Mit dem oben genannten denke ich, dass direktes Schlagen verboten werden kann!

Übrigens gibt es current_post, weil es korrekt_post ähnelt. Dank dessen habe ich mich in meinem Kopf durcheinander gebracht und schreibe einen Code, der direkte Treffer verbietet, also kann ich ihn nicht verbieten! Ich hielt meinen Kopf für ein paar Minuten.

Dies ist auch ein Punkt, bei dem Sie vorsichtig sein müssen.

Recommended Posts

Rails Direct-Hit-Verbot-Methode (Wechseln Sie nicht durch Eingabe einer URL zum Bearbeitungsbildschirm einer anderen Person.)
Was tun, wenn javax.el.ELException: Kein gültiger Methodenausdruck: wird angezeigt, wenn der JSF-Bildschirm angezeigt wird
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
[Schienen] So verhindern Sie den Bildschirmübergang
Bildschirmübergang nach Post-Methode [Java]
So machen Sie https zum Schema der URL, die vom URL-Helfer von Rails generiert wurde