Niedawno przeniosłem się z wtyczki JSecurity do Spring Security. Jak mogę uzyskać uwierzytelnionego użytkownika z moich kontrolerów?Grails and Spring Security: Jak uzyskać uwierzytelnionego użytkownika z kontrolera?
Odpowiedz
używam 0.5.1 oraz następujące prace dla mnie:
class EventController {
def authenticateService
def list = {
def user = authenticateService.principal()
def username = user?.getUsername()
.....
.....
}
}
Obecnie nie udokumentowane, ale w pliku instalacyjnego wtyczki, są 3 sposoby, które dodaje się do każdego kontrolera, dzięki czemu faktycznie nie trzeba wstrzyknąć 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'
}
}
oznacza to, że można po prostu zadzwonić
principalInfo
Aby uzyskać główny obiekt. Ma również "isUserLogin", aby sprawdzić, czy użytkownik jest zalogowany i "authUserDomain", aby uzyskać rzeczywistą instancję klasy domeny (osoba/użytkownik) powiązaną z głównym użytkownikiem zalogowanego użytkownika.
Świetne informacje, dzięki za napiwek. –
Spędziłem półtorej godziny waląc głową w klawiaturę, próbując podłączyć wtyczkę Acegi do wzorca ładowania plików widocznego na http://www.packtpub.com/article/file-sharing-in-grails, dopóki nie znalazłem to. Dzięki! –
Teraz metoda getPrincipalInfo nazywa się getAuthenticateduser, ale dzięki za dobrą wskazówkę! – lucke84
Następujący kod jest z Spring Security Core Plugin (Version: 1.1.2) - Reference Documentation - Section 6.2
grails.plugins.springsecurity.SpringSecurityService dostarcza użytecznych funkcji bezpieczeństwa. Jest to usługa regularne Grails, więc użyć Dependency Injection wstrzyknąć go do kontrolera, usług TagLib, i tak dalej:
class SomeController {
def springSecurityService
def someAction = {
def user = springSecurityService.currentUser
…
}
}
Dziś myślę, że sposób to zrobić jest:
def user = getAuthenticatedUser()
można uzyskać bieżącego użytkownika w ten sposób także
class AnyController {
def springSecurityService
def someAction = {
def user = User.get(springSecurityService.principal.id)
}
}
użyć tego kodu:
if (springSecurityService.isLoggedIn()){
println "Logged In"
}
- 1. Grails Spring Security Testing
- 2. Wtyczka Grails Spring Security - modyfikacja zalogowanych uprawnień użytkownika
- 3. Jak uzyskać rolę dla bieżącego użytkownika z Spring Security
- 4. Grails Spring Security Rola i grupa
- 5. Mock Grails Spring Security Użytkownik zalogowany
- 6. Grails Spring Security użyj adresu e-mail, aby się zalogować
- 7. Content-Security-Policy Spring Security
- 8. Uzyskaj więcej informacji od użytkownika - Spring Security
- 9. Invalidate spring security session
- 10. Problem zależności z wtyczką spring-security-core
- 11. Spring Security Java Config
- 12. Spring Social facebook + Spring Security
- 13. Jak uzyskać uwierzytelnionego użytkownika na klasy serializera do sprawdzania poprawności
- 14. php frameworks and security
- 15. Spring MVC + Spring Security zaloguj się z usługą internetową odpoczynku
- 16. Firebase JSON Security and Arrays
- 17. Jak dodać nowego użytkownika do Spring Security w środowisku wykonawczym
- 18. Spring Data JPA and spring-security: filtruj na poziomie bazy danych (szczególnie w przypadku stronicowania)
- 19. Grails and Amazon SimpleDB
- 20. Parametry kontrolera Groovy Grails
- 21. Spring-Security: Nazwa użytkownika jest pusta, aby zalogować się po uaktualnieniu do wersji Spring-Security 4.1
- 22. RabbitMQ + Web Stomp and security
- 23. Jak wylogować uwierzytelnionego użytkownika w ServiceStack?
- 24. Jak działają sesje Spring Security?
- 25. Spring Security blokuje użytkownika przy jednoczesnych próbach logowania
- 26. Grails and Debugging UrlMappings
- 27. Spring Security: Jak zresetować SPRING_SECURITY_LAST_EXCEPTION.message?
- 28. Zmiana konfiguracji Spring Security
- 29. Spring Security OpenID - UserDetailsService, AuthenticationUserDetailsService
- 30. Jak uzyskać dostęp do obiektu użytkownika w kontrolerze Grails
Wielkie dzięki! Tylko literówka w powyższym kodzie. Powinien to być def username = user? .getUsername() –
Dzięki za złapanie tego, poprawiłem to. –
Uwaga: wprowadzono kilka zmian w nowej wersji Spring Security. [Zobacz tutaj przykład kodu Spring Security w wersji 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