4 Stimmen

Rails & Devise: Wie kann man einen bestimmten Benutzer authentifizieren?

Ich verwende Devise zum ersten Mal mit Rails, und ich habe Probleme mit einer Sache: Ich habe das mitgelieferte authenticate_user! Methode im Controller meines Benutzers, um den Zugriff auf Seiten wie folgt zu beschränken: before_filter :authenticate_user!, :only => [:edit, :show, :update, :create, :destroy]

Dies ermöglicht jedoch jedem angemeldeten Benutzer den Zugriff auf alle anderen Benutzer :edit Aktion, die ich nur auf diesen Benutzer beschränken möchte. Wie würde ich das tun?

5voto

Dex Punkte 12167

In Ihrer Bearbeitungsmethode müssen Sie prüfen, ob der Benutzer Eigentümer des Datensatzes ist:

def edit
   @record = Record.find(params[:id])
   if @record.user == current_user
      @record.update_attributes(params[:record])
   else
      redirect_to root_path
   end
end

3voto

Zach Inglis Punkte 1248

Sie sollten sich eine Autorisierung wie die von CanCan ansehen. Oder erstellen Sie alternativ eine neue Methode wie diese:

# Create an admin boolean column for your user table.

def authenticate_admin!
  authenticate_user! and current_user.admin?
end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X