3.5 HTTP-Authentifizierung 

Implementierung
Rails stellt uns die Methode authenticate_or_request_with_http_basic zur Verfügung, mit deren Hilfe es ziemlich einfach ist, eine HTTP-Authentifizierung zu implementieren. Die Methode implementieren Sie im Controller und übergeben ihr einen Block, in dem Sie den Benutzernamen und das Passwort setzen:
class EmployeesController < ApplicationController before_filter :authenticate # GET /employees # GET /employees.xml def index @employees = Employee.find(:all) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @employees } end end ... # DELETE /employees/1 # DELETE /employees/1.xml def destroy @employee = Employee.find(params[:id]) @employee.destroy respond_to do |format| format.html { redirect_to(employees_url) } format.xml { head :ok } end end private def authenticate authenticate_or_request_with_http_basic do |user,password| user=="admin" && password=="geheim" end end end
Listing app/controllers/employees_controller.rb
before_filter
Durch Aufruf der Methode before_filter :authenticate am Anfang des Controllers bewirken Sie, dass vor dem Ausführen jeder Methode des Controllers die Methode authenticate aufgerufen wird. Damit die Methode authenticate nicht von außen aufrufbar ist, haben wir sie als private definiert.
Test im Browser
Wenn Sie jetzt den lokalen Railsserver neu starten und die Applikation aufrufen, öffnet sich ein Authentifizierungsformular:
Abbildung http://localhost:3000/employees
Nach erfolgreicher Authentifizierung durch Eingabe des Benutzernamens »admin« und des Passworts »geheim« können Sie alle Funktionen der Personalverwaltung nutzen.
:only, :except
Um nur für bestimmte Methoden eines Controllers eine HTTP-Authentifizierung einzusetzen, können Sie die Methode before_filter mit den Optionen :only oder :except aufrufen:
before_filter :authenticate, :only => [:edit, :update, :destroy] before_filter :authenticate, :except => [:index]
Jetzt ist unsere Personalverwaltung vor nicht autorisierten Zugriffen geschützt. Sie können natürlich noch die Views nach Ihrem Geschmack formatieren. Dabei können Sie vor allem die Bezeichnungen »Name«, »Firstname«, »Lastname« usw. ändern bzw. übersetzen. Rails hat hier automatisch die Feldnamen aus der Datenbank benutzt, das muss aber nicht so bleiben. Wichtig ist, dass das Model und die Felder der Datenbank in Englisch benannt werden, aber in welcher Sprache die Feldbezeichnungen später in den Views ausgegeben werden, spielt keine Rolle.
Im nächsten Beispiel in Kapitel 5 (Bookmarksverwaltung) werden wir Schritt für Schritt eine komplette Applikation erstellen, ohne den scaffold-Generator einzusetzen, damit Sie ganz genau nachvollziehen können, was im Einzelnen im Hintergrund einer Rails-Applikation passiert.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.