2016-04-13 3 views
0

Ich rate nein. Hier ist die Situation, die ich im Sinn haben:Verwendet if/then in VIEWS eine angemessene Sicherheitsvorkehrung?

form action='/12345/destroy', method='POST' 
    - if @current_user.kind_of? Admin 
    button 
    - else 
    span You cant do that 

Was ist der bessere Weg, über den Bau eine Seite wie diese zu gehen? Erstellen Sie einen Controller für die "Verantwortlichen" und haben Sie die Tasten dort? Was ist, wenn der Administrator einigen Benutzern die Verwendung der Löschschaltfläche verweigert? Sind wir wieder auf Platz eins? Danke

Antwort

0

Ihr Beispiel ist vollkommen in Ordnung, aber es hängt wirklich von Ihren Anforderungen ab. Wenn Sie der Meinung sind, dass irgendwann mehr Benutzer erforderlich sein werden und Sie befürchten, dass die Ansichten unübersichtlich werden, empfehle ich Ihnen, in eine ACL-Bibliothek zu schauen. Alternativ können Sie immer Ihre eigene Berechtigungsschicht rollen lassen.

0

Ihre Sicht ist in Ordnung, aber natürlich ist es in keiner Weise sicher. Sie müssen die Berechtigungen in Ihrem "Controller" überprüfen (falls Sie einen besitzen) oder auf der Empfängerseite dieser Anfrage.

Auch diese Logik wird wahrscheinlich an mehr als einem Ort verwendet werden. Sie könnten es in eine Hilfsmethode extrahieren.

form action='/12345/destroy', method='POST' 
    = render_destroy_action_for @current_user 

Sobald Sie diese Logik in einer Methode versteckt hat, wird es leichter sein, später zu ändern.

Verwandte Themen