Spring Security yeniyim "başarılı bir giriş etkinliği dinleyicisi" ekleyerek. Başarılı bir şekilde kullanıcı günlükleri olarak adlandırılacak bir olay dinleyicisini nasıl ekleyebilirim? Ayrıca, bu dinleyicide daha fazla erişilebilir olması gereken bir tür benzersiz oturum kimliği almam gerekiyor. Başka bir sunucuyla senkronize etmek için bu kimliğe ihtiyacım var.Bahar güvenliği:
cevap
Sen ApplicationListener uygulayan bir bahar Bean tanımlamanız gerekir.
Sonra kodunuzda, böyle bir şey yapmak:
public void onApplicationEvent(ApplicationEvent appEvent)
{
if (appEvent instanceof AuthenticationSuccessEvent)
{
AuthenticationSuccessEvent event = (AuthenticationSuccessEvent) appEvent;
UserDetails userDetails = (UserDetails) event.getAuthentication().getPrincipal();
// ....
}
}
Ardından, applicationContext.xml dosyasında, sadece bu fasulye tanımlamak ve otomatik olarak olayları :)
Grails olarak almaya başlayacak Bahar Güvenlik Eklentisi'yle, sen Config.groovy yapabilirsiniz:
grails.plugins.springsecurity.useSecurityEventListener = true
grails.plugins.springsecurity.onAuthenticationSuccessEvent = { e, appCtx ->
def session = SecurityRequestHolder.request.getSession(false)
session.myVar = true
}
Sağ yönlü Config.groovy def isteği = RequestContextHolder isteği almak için .currentRequestAttributes(); – openSource
Bu etkinlikte mevcut giriş yapan kullanıcıyı nasıl alacağını bilen var mı? Şu anda kullanıyorum "def springSecurityService = Holders.grailsApplication.mainContext.getBean 'springSecurityService'; def user = springSecurityService.getPrincipal() 'ancak kullanıcı her zaman boştur. Teşekkür ederim! DÜZENLEME:. Def kullanıcıyı yapıyor gibi görünüyor = event.getAuthentication() getPrincipal() inşaat büyük! – Dinoo
Phill cevap benzer ancak dikkate Genellemelere almaya değiştirilme:
public class AuthenticationListener implements ApplicationListener<AuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(final AuthenticationSuccessEvent event) {
// ...
}
}
AuthenticationSuccessEvent ile ilgili sorun, beni hatırla hesabında yayınlanmadı. Beni hatırla kimlik doğrulaması kullanıyorsanız, bunun yerine InteractiveAuthenticationSuccessEvent öğesini kullanın, hatırla-beni oturum açmanın yanı sıra normal oturum açma için de çalışır.
@Component
public class LoginListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event)
{
UserDetails userDetails = (UserDetails) event.getAuthentication().getPrincipal();
// ...
}
}
Çok teşekkürler! Bunu, başarılı bir başarı işleyicisi kullanarak gerçekleştirmeye çalıştım, ancak şu sorunla karşılaştı: http://stackoverflow.com/questions/11575860/remember-me-and-authentication-success-handler. Cevabınız durumu kurtardı! – yname
- 1. Yay Güvenliği, Bahar MVC ve Oturum Oturumları
- 2. REST ve Angular 2.0 için bahar güvenliği
- 3. Bahar güvenliği kullanıcı rolü yönetimi için nasıl kullanılır?
- 4. Bahar güvenliği başarılı authtication sonra varsayılan hedef-url isabet değil
- 5. Yay Güvenliği Değişim yapılandırması
- 6. Yay Güvenliği OAuth2 InvalidGrantException
- 7. Yay Güvenliği 3.1 Çalıştırma
- 8. Yay Güvenliği: setUserPrincipal el ile
- 9. Yay güvenliği - expiredUrl çalışmıyor
- 10. AuthenticationSuccessHandler Yay Güvenliği
- 11. ayrıntılar güvenliği
- 12. Yay güvenliği hashBeniyor çalışmıyor
- 13. Yay Güvenliği Java Config
- 14. Bahar
- 15. Bahar
- 16. Bahar
- 17. Bahar
- 18. Yay güvenliği ile "ek açıklamalar" kullanarak https olarak kanal güvenliği nasıl eklenir?
- 19. Yay güvenliği: ek açıklamaları kullanarak https zorlama?
- 20. Yay güvenliği kullanarak kayıt formu formu
- 21. Yay Güvenliği HTTP Temel Kimlik Doğrulaması
- 22. Yay güvenliği erişim sorumlusu
- 23. Android varlıklarının güvenliği klasörü
- 24. Üretim sunucusunda raylar güvenliği
- 25. jmx mbean dişli güvenliği
- 26. Yay Güvenliği: Set GrantedAuthorities
- 27. Amazon Topluluğu Güvenliği AMI'leri
- 28. NSMutableDictionary iş parçacığı güvenliği
- 29. AMQP Qpid: iş güvenliği
- 30. Java XPathFactory iş güvenliği
teşekkürler! Sadece AuthenticationSuccessEvent öğesini buldu ancak bir dinleyicinin nasıl kaydedileceğini anlamaya çalışıyordum. – axk
sorduğu oturum kimliği ne olacak? – siebmanb
@siebmanb sadece dinleyiciye '@Outowired HttpSession session' ekleyin. Bahar, düzeltme oturumuna otomatik olarak atanan bir vekil enjekte edecektir. –