'u kullanarak nasıl programlanabilir bir şekilde kimlik doğrulaması yapabilirim? Bir kullanıcının kimliğini doğrulamak için burada ne yapıyorum? Kullanıcının hesabını etkinleştirmek için birkaç adımdan geçtiği bir uygulamam var ve bu nedenle giriş formunu atlayıp doğrudan kontrol paneline yönlendirmek istiyorum. Benim kimlik doğrulama sağlayıcısı olarak DaoAuthenticationProvider sınıfını kullanmalıdırKullanıcı tarafından SpringAuthenticationProvider
protected void automatedLogin(String username, String password, HttpServletRequest request) {
try {
// Must be called from request filtered by Spring Security, otherwise SecurityContextHolder is not updated
CustomUserDetailsService udService = new CustomUserDetailsService(userDAO, request);
UserDetails uDetails = udService.loadUserByUsername(username);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(uDetails, password);
token.setDetails(new WebAuthenticationDetails(request));
DaoAuthenticationProvider authenticator = new DaoAuthenticationProvider();
Authentication authentication = authenticator.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
} catch (Exception e) {
e.printStackTrace();
SecurityContextHolder.getContext().setAuthentication(null);
}
}
: Burada
gibi benim otomatik giriş fonksiyonu görüntüsü. Ben doğru kimlik vb kimliği, otorite rolleri içeren bir UserDetails modeli alıyorum doğruladıktan
bir yere DaoAuthenticationProvider sınıfında yol boyunca boş Pointer içine koşuyorum kimlik doğrulaması yöntemini çağıran:
org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider de org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser (DaoAuthenticationProvider.java:109) deorg.springframework.security.authentication.AuthenticationServiceException
. kimlik doğrulaması (AbstractUserDetail sAuthenticationProvider.java:132) com.bosch.actions.BaseController.doAutoLogin adresinden (BaseController.java:659) . . . 'I don gibi ben boş olanı gerçekten emin değilim org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser (DaoAuthenticationProvider.java:101)
de java.lang.NullPointerException: Neden Olduğu Kaynak kodu mevcut.
Düzenleme Burada kaynak kodunu bulabildim - https://github.com/SpringSource/spring-security/blob/master/core/src/main/java/org/springframework/security/authentication/dao/DaoAuthenticationProvider.java
açıkça nesne üzerinde UserDetailsService ayarlayarak Boş Pointer etrafında almak başardı: şimdi
authenticator.setUserDetailsService(udService);
Ama Sağlanan parola doğru olduğunu bildiğimde kötü kimlik bilgisi özel durumu alıyorum, çünkü kodu daha önce UserDetails nesne kümesindeki hata ayıklayıcısında gördüm.
org.springframework.security.authentication.BadCredentialsException: org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks (DaoAuthenticationProvider.java:87) org.springframework.security en de Kötü kimlik bilgileri. authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate (AbstractUserDetailsAuthenticationProvider.java:149)
Bahar Güvenlik kullanılabilir kaynak kodu var, açık kaynak. DaoAuthenticationProvider, bir yay yönetimli fasulye olarak tasarlandığından, muhtemelen sorunlarınız vardır. – samlewis