Ich bin kürzlich vom JSecurity-Plugin zu Spring Security gewechselt. Wie bekomme ich den authentifizierten Benutzer aus meinen Controllern?
Antworten
Zu viele Anzeigen?Es ist derzeit nicht dokumentiert, aber in der Plugin-Installationsdatei gibt es 3 Methoden, die es zu jedem Controller hinzufügt, so dass Sie nicht wirklich den authenticationService injizieren müssen:
private void addControllerMethods(MetaClass mc) {
mc.getAuthUserDomain = {
def principal = SCH.context?.authentication?.principal
if (principal != null && principal != 'anonymousUser') {
return principal?.domainClass
}
return null
}
mc.getPrincipalInfo = {
return SCH.context?.authentication?.principal
}
mc.isUserLogon = {
def principal = SCH.context?.authentication?.principal
return principal != null && principal != 'anonymousUser'
}
}
Das heißt, Sie können einfach
principalInfo
Um das Hauptobjekt zu erhalten. Außerdem gibt es "isUserLogin", um festzustellen, ob der Benutzer angemeldet ist, und "authUserDomain", um die tatsächliche Domänenklasseninstanz (die Person/Benutzer) zu erhalten, die mit dem Hauptobjekt des angemeldeten Benutzers verbunden ist.
Der folgende Code stammt aus der Spring Security Core Plugin (Version: 1.1.2) - Referenzdokumentation - Abschnitt 6.2
grails.plugins.springsecurity.SpringSecurityService stellt Sicherheitsfunktionen zur Verfügung. Es ist ein regulärer Grails Service, also benutzt man Dependency Injection um es in einen Controller, Service, Taglib, und so weiter zu injizieren:
class SomeController {
def springSecurityService
def someAction = {
def user = springSecurityService.currentUser
…
}
}
- See previous answers
- Weitere Antworten anzeigen