2012/01/28

Authentifizierung mit Rails und Authlogic

Man braucht sie heutzutage in jeder Applikation: die Benutzeranmeldung. Darin liegt auch die erste Hürde. Ein Controller muss die Anmeldung übernehmen, und der ApplicationController muss dafür sorgen, dass angemeldete Nutzer bei jedem Request aus der Session geladen werden. In jedem Controller muss festgelegt werden, für welche Actions man angemeldet sein muss.

Ein Tool, welches die meisten benötigten Funktionen abdeckt und relativ leicht zu installieren ist, ist authlogic. (Schnellanleitung: https://github.com/binarylogic/authlogic_example/blob/master/README.rdoc)


Mögliche Fehler nach der Installation:

undefined method `valid_password?' for #...

Nachdem ich die Spalte crypted_password der Tabelle hinzugefügt hatte, war das Problem gelöst.
Authlogic benötigt mindestens drei Felder, die meist automatisch erkannt werden. Benutzername/Email, Passwort und Passwortbestätigung. In meinem Fall musste ich in meinem _form.html.erb das Feld für die Passwortbestätigung :passwort_confirmation nennen, damit es funktioniert hat.
Wenn man nun authlogic soweit installiert hat, lässt sich ein nicht authentifizierter Besucher ganz einfach mit dem Aufruf eines before_filters in dem Ziel-Controller aussperren:


class UsersController < ApplicationController
  before_filter :require_no_user, :only => [:new, :create]
  before_filter :require_user, :only => [:show, :edit, :update]
[...]

No comments:

Post a Comment