2

Ich verwende ein Single-Sign-On-Authentifizierungssystem vor meiner Rails-Anwendung, so dass Sie nicht auf die Anwendung zugreifen können, bis Sie über unser Business-Authentifizierungssystem authentifiziert haben.Rails: Single-Sign-on-Session-basierte Authentifizierung

Einmal authentifiziert Ich möchte rollenbasierte Autorisierung einrichten, aber ich glaube, ich muss noch eine Art von Benutzermodell einrichten, damit dies funktioniert.

Ich bin daran interessiert, Cancan für die Autorisierung und möglicherweise einfache Rollen für die Rollen zu verwenden. Aber wie gehe ich vor, um den aktuell angemeldeten Benutzer zu registrieren? Ich habe bisher nur auf die Sitzungsvariablen zugegriffen.

Ich kann die Sitzungsvariablen für die Rollen nicht verwenden, da ich keine Kontrolle über unser Single Sign On System habe.

Ich habe nach etwas einfach gesucht, aber ich war nicht in der Lage, eins zu finden.

+0

Ich habe nach einer Lösung gehalten suchen, und ich kann immer noch nicht finden, was ich suche. Ich denke, ich muss eine zweite Ebene der Authentifizierung erstellen? ohne Passwörter, die die Anmeldung akzeptieren, solange sich der Benutzername in der Datenbank befindet? – Rumpleteaser

+0

Das ist nicht wirklich was ich will aber. Dann müssen wir den Benutzer jedes Mal hinzufügen, wenn eine neue Person kommt. – Rumpleteaser

Antwort

0

Ich habe einen Controller für Admins erstellt und eingegeben, die alle Admin-Benutzer in das und bin einfach sehr grundlegende Genehmigung geht umzusetzen wie in ryan beizbrühen früh railcast: http://railscasts.com/episodes/20-restricting-access

ich die Beschränkung des Zugriffs auf jedem Controller und in der Ansichten. Ich fühle es ein bisschen dreckig, aber es funktioniert.

In der Admin-Prüffunktion ich, wenn die Anmeldeinformationen Sitzungen Benutzer überprüfen, um zu sehen, in der Tabelle sind:

helper_method :admin? 

def admin? 
    admin = Admin.find_all_by_username(request.env["SPEP_ATTR_uid"]) 
    if admin.empty? 
    false 
    else 
    true 
    end 
end 

def authorize 
    unless admin? 
    flash[:error] = "unauthorized access" 
    redirect_to home_url 
    false 
    end 
end