2016-07-20 9 views
0

Ich versuche, zusätzliche Informationen zu meinem Spring Security Principal anzupassen und hinzuzufügen. Gesucht durch die Feder doc und auch einige Beispiele, wie dieseSpring benutzerdefinierten BenutzerDetail Benutzerberechtigung festlegen

How to add additional details to Spring Security userdetails

Dieses Beispiel explizit Authentifizierungs Werte auf true. Zum Beispiel:

Statt manuell accountNonExpired, credentialsNonExpired ... usw. auf true zu setzen. Gibt es eine Authority-Methode, die User.Role überprüfen und den Wert von accountNontExpired..etc erhalten könnte?

Ich fand ein anderes Beispiel, in dem sie auch Authority manuell einstellen .... ist das der richtige Weg?

http://javahotpot.blogspot.in/2013/12/spring-security-adding-more-information.html

Dank

Antwort

0

Sie haben Ihr eigenes Benutzermodell als Erweiterung des regulären Benutzermodell erstellen (wie du) und Sie haben die Informationen, die Sie selbst müssen abzurufen.

Bei Verwendung der Spring-Datenbankauthentifizierung werden die Felder accountNonExpired, usw. aus den Spalten der Datenbank abgerufen.

Wenn Spring Datenbank-Authentifizierung verwenden, setzt es einfach accountNonExpired, credentialsNonExpired und accountNonLocked zu true. Die Eigenschaft enabled wird aus der Datenbank abgerufen.

Das endet mit: Ja, Sie müssen diese Felder selbst einstellen.


Verfahren setAuthority(..) die Autorität Aufgabe der Authentication Objektsätze, die eine Hülle um die tatsächliche Stelle ist (im Fall der Benutzer). Das Objekt Authentication kann aus der SecurityContextHolder abgerufen werden und wird zum Speichern des Authentifizierungsstatus verwendet (z. B. ob der Benutzer authentifiziert ist).

+0

"Bei Verwendung der Spring-Datenbankauthentifizierung werden das Feld accountNonExpired, credentialsNonExpired usw. aus den Spalten der Datenbank abgerufen." <- bist du sicher? Das ist ein Benutzerschema von SpringDoc http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#user-schema Es hat keine AnmeldeinformationenNonExpired ..etc als Spalten –

+0

@EricHuang Oh, Du hast recht. Ich denke, ich habe dies zusammen mit der LDAP-Authentifizierung geworfen. Aber ich sah den Code erneut und die 'JdbcDaoImpl' tut nicht mehr als das Setzen der drei Feld auf' true' (siehe https://github.com/spring-projects/spring-security/blob/master/core/ src/main/java/org/springframework/sicherheit/core/benutzerdetails/jdbc/JdbcDaoImpl.java). Also sollte es genauso sein. –

+0

@EricHuang Ich habe meine Antwort aktualisiert. –