Recentemente sono passato dal plug-in JSecurity a Spring Security. Come posso ottenere l'utente autenticato dai miei controller?Grails e Spring Security: come ottengo l'utente autenticato da un controller?
risposta
sto usando 0.5.1 e le seguenti opere per me:
class EventController {
def authenticateService
def list = {
def user = authenticateService.principal()
def username = user?.getUsername()
.....
.....
}
}
Al momento non è documentato, ma nel file di installazione plug-in, ci sono 3 metodi che si aggiunge a tutti i controller in modo che si realtà non c'è bisogno di iniettare l'AuthenticationService:
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'
}
}
Questo significa che si può chiamare
principalInfo
Per ottenere l'oggetto principale. Ha anche "isUserLogin" per vedere se l'utente è loggato e "authUserDomain" per ottenere l'effettiva istanza della classe di dominio (la Persona/Utente) associata al principale dell'utente connesso.
Grandi informazioni, grazie per il suggerimento. –
Ho passato un'ora e mezza a sbattere la testa contro la tastiera cercando di far funzionare la spina Acegi con il pattern di caricamento file mostrato in http://www.packtpub.com/article/file-sharing-in-grails finché non ho trovato Questo. Grazie! –
Ora il metodo getPrincipalInfo si chiama getAuthenticateduser, ma grazie per il buon consiglio! – lucke84
Il seguente codice è dal grails.plugins.springsecurity.SpringSecurityService Spring Security Core Plugin (Version: 1.1.2) - Reference Documentation - Section 6.2
fornisce funzioni di utilità di sicurezza. Si tratta di un servizio regolare Grails, in modo da utilizzare l'iniezione di dipendenza per iniettare in un controller, il servizio, taglib, e così via:
class SomeController {
def springSecurityService
def someAction = {
def user = springSecurityService.currentUser
…
}
}
Al giorno d'oggi, penso che il modo per farlo è:
def user = getAuthenticatedUser()
È possibile ottenere l'utente corrente in questo modo anche
class AnyController {
def springSecurityService
def someAction = {
def user = User.get(springSecurityService.principal.id)
}
}
di questo codice:
if (springSecurityService.isLoggedIn()){
println "Logged In"
}
- 1. Grails 3 e Spring Security Plugin
- 2. Come impostare manualmente un utente autenticato in Spring Security/SpringMVC
- 3. Grails Spring-Security -come confrontare le password-
- 4. Mock Grails Spring Security Utente registrato
- 5. Come personalizzare il controller e le viste di accesso/disconnessione di Grails Spring Security Core 2?
- 6. Grails/Spring Security: impossibile accedere con un utente appena creato
- 7. Spring Security UI and grails 2.0
- 8. Utilizzo di annotazioni Pre/Post Spring Security con Grails
- 9. Integrazione Spring Security OAuth2 e Spring Social
- 10. Spring Session e Spring Security
- 11. Spring MockMVC, Spring security e Mockito
- 12. Spring Security: Differenza tra/** e/* url pattern in Spring-Security
- 13. Spring Security: accesso all'attuale utente autenticato all'interno di un servlet Filtro
- 14. Configurazione Spring-Boot e Spring-Security
- 15. Spring Security: setUserPrincipal manualmente
- 16. Spring Security, Spring MVC e Login Sessions
- 17. Grails Spring Security utilizza l'e-mail per l'accesso
- 18. Come saltare saltuariamente il filtro SecurityContextPersistenceFilter nella catena del filtro del plug-in Grails Spring Security
- 19. impostazione timeout sessione in Grails Spring Security Core Plugin
- 20. Grails Spring Security reindirizza alla pagina di accesso utilizzando https
- 21. URL a volte aggiunto con jsessionid Grails/Spring Security
- 22. Come implementare Openid connect e Spring Security
- 23. Spring Security e integrazione CAS
- 24. Grails - nucleo di sicurezza SSL e Spring
- 25. Spring Security: custom userdetails
- 26. Grails: Groovy: SSLPeerUnverifiedException: peer non autenticato
- 27. Come proteggere l'API REST con Spring Boot e Spring Security?
- 28. spring security 403 error
- 29. Ulteriori informazioni da parte dell'utente - Spring Security
- 30. Chiamare metodi statici da Spring Security Expressions?
Grazie mille! Solo un errore di battitura nel tuo codice precedente. Dovrebbe essere def username = user? .getUsername() –
Grazie per averlo capito, l'ho corretto. –
Si prega di notare che ci sono stati alcuni cambiamenti con la nuova versione di Spring Security. [Vedi qui per esempio il codice per Spring Security versione 1.1.2] (http://stackoverflow.com/questions/775053/grails-and-spring-security-how-do-i-get-the-authenticated-user-from -within-a-con/6270545 # 6270545) – Chris