Tôi mới sử dụng Bảo mật mùa xuân. Làm cách nào để thêm trình xử lý sự kiện sẽ được gọi là người dùng đăng nhập thành công? Ngoài ra tôi cần phải nhận được một số loại ID phiên duy nhất trong trình lắng nghe này sẽ có sẵn thêm. Tôi cần ID này để đồng bộ hóa với một máy chủ khác.Bảo mật mùa xuân: thêm "Khi người nghe sự kiện đăng nhập thành công"
Trả lời
Bạn cần xác định một Spring Bean thực hiện ApplicationListener.
Sau đó, trong mã của bạn, làm một cái gì đó như thế này:
public void onApplicationEvent(ApplicationEvent appEvent)
{
if (appEvent instanceof AuthenticationSuccessEvent)
{
AuthenticationSuccessEvent event = (AuthenticationSuccessEvent) appEvent;
UserDetails userDetails = (UserDetails) event.getAuthentication().getPrincipal();
// ....
}
}
Sau đó, trong tập tin applicationContext.xml bạn, chỉ cần xác định đậu đó và nó sẽ tự động bắt đầu nhận các sự kiện :)
Trong Grails , với xuân an Plugin, bạn có thể làm điều này trong Config.groovy:
grails.plugins.springsecurity.useSecurityEventListener = true
grails.plugins.springsecurity.onAuthenticationSuccessEvent = { e, appCtx ->
def session = SecurityRequestHolder.request.getSession(false)
session.myVar = true
}
Cách thích hợp để nhận yêu cầu trong Config.groovy def request = RequestContextHolder? .currentRequestAttributes(); – openSource
Có ai biết cách đăng nhập người dùng hiện tại trong sự kiện này không? Tôi hiện đang sử dụng 'def springSecurityService = Holders.grailsApplication.mainContext.getBean 'springSecurityService'; def user = springSecurityService.getPrincipal() 'nhưng người dùng luôn là null. Cảm ơn bạn! EDIT: Hình như làm def user = event.getAuthentication(). GetPrincipal() hoạt động tốt! – Dinoo
Tương tự như câu trả lời Phill, nhưng sửa đổi để lấy Generics xem xét:
public class AuthenticationListener implements ApplicationListener<AuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(final AuthenticationSuccessEvent event) {
// ...
}
}
Sự cố với AuthenticationSuccessEvent là nó không được xuất bản khi đăng nhập nhớ-tôi. Nếu bạn đang sử dụng xác thực nhớ-tôi, hãy sử dụng InteractiveAuthenticationSuccessEvent để thay thế, nó hoạt động cho việc đăng nhập bình thường cũng như cho việc đăng nhập nhớ-tôi.
@Component
public class LoginListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event)
{
UserDetails userDetails = (UserDetails) event.getAuthentication().getPrincipal();
// ...
}
}
Cảm ơn rất nhiều! Tôi đã cố gắng để đạt được điều này bằng cách sử dụng auth-success-handler, nhưng phải đối mặt với vấn đề này: http://stackoverflow.com/questions/11575860/remember-me-and-authentication-success-handler. Câu trả lời của bạn đã giải quyết tình huống! – yname
- 1. Chuyển hướng bảo mật mùa xuân sau khi đăng nhập
- 2. Trang đăng nhập bảo mật mùa xuân
- 3. Đăng nhập tự động với bảo mật mùa xuân
- 4. Bảo mật mùa xuân - Chuyển hướng nếu đã đăng nhập
- 5. Bảo mật mùa xuân: lập trình đăng nhập
- 6. Đăng ký khi đăng nhập với bảo mật mùa xuân openid
- 7. Bảo mật mùa xuân - UserDetailsService implementation - Đăng nhập Fails
- 8. Bảo mật mùa xuân @RequestBody
- 9. Mã hóa bảo mật mùa xuân MD5
- 10. Bảo mật mùa xuân không nhấn mặc định-target-url sau khi xác thực thành công
- 11. Bảo mật mùa xuân: Đặt GrantedAuthorities
- 12. Bảo mật mùa xuân - Đăng nhập có lập trình mà không cần mật khẩu
- 13. Bảo mật mùa xuân: userdetails tùy chỉnh
- 14. Ví dụ đăng nhập từng bước sử dụng bảo mật mùa xuân 3.0 với hdbc
- 15. OpenID bảo mật mùa xuân - UserDetailsService, AuthenticationUserDetailsService
- 16. Bảo mật mùa xuân: setUserPrincipal theo cách thủ công
- 17. Spring MVC + Đăng nhập bảo mật mùa xuân bằng dịch vụ web còn lại
- 18. Bảo mật mùa xuân: Người dùng xác thực theo cách thủ công
- 19. Làm cách nào để có được tên người dùng từ thông tin đăng nhập không thành công khi sử dụng bảo mật mùa xuân?
- 20. Bảo mật mùa xuân 3.0 Google Apps mở id đăng nhập bằng OpenID4Java
- 21. Bảo mật mùa xuân, Spring MVC và các phiên đăng nhập
- 22. Lấy ID phiên có bảo mật mùa xuân
- 23. Bảo mật mùa xuân-Lỗi khi tạo bean 'org.springframework.security.filterChains'
- 24. Log4j ghi tên người dùng bảo mật mùa xuân
- 25. Bảo mật mùa xuân null pointer exception
- 26. Bảo mật mùa xuân Đăng nhập với một twist: người dùng phải kích hoạt tài khoản của họ trước khi đăng nhập
- 27. Buộc người dùng thay đổi mật khẩu đã hết hạn trong bảo mật mùa xuân
- 28. Bảo mật mùa xuân Đăng nhập một lần trong môi trường Windows
- 29. phiên bị mất sau khi đăng nhập thành công?
- 30. Làm cách nào để ngăn chặn bảo mật mùa xuân khỏi việc thêm; jsessionid = XXX để đăng nhập chuyển hướng?
Cảm ơn! Chỉ cần tìm thấy AuthenticationSuccessEvent nhưng đã cố gắng tìm ra cách để đăng ký một người nghe. – axk
ID phiên mà anh ta hỏi về điều gì? – siebmanb
@siebmanb chỉ cần thêm '@Autowired HttpSession session' vào trình nghe. Spring sẽ tiêm một proxy đại diện tự động cho phiên điều chỉnh. –