2016-04-05 15 views
2

MODELYay güvenliği konusunda nasıl bir alan elde edilir?

@Column(name="id_usr_adm_tkn") 
private int id; 

@Column(name="npp_usr_adm_tkn") 
private String npp; 

@Column(name="jbtn_usr_adm_tkn") 
private String jabatan; 
@Id 
@Column(name="username_usr_adm_tkn") 
private String username; 

@Column(name="password_usr_adm_tkn") 
private String password; 
//describes the tables in the database 
@Column(name="email_usr_adm_tkn") 
private String email; 

@Column(name="nm_adm_usr_tkn") 
private String nama; 

@Column(name="ktk_adm_usr_tkn") 
private String kontak; 

@Column(name="sts") 
private int sts; 

@Column(name="id_wlyh") 
private int id_wlyh; 

yay security.xml

<authentication-manager> 
    <authentication-provider> 
     <jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query="select username_usr_adm_tkn,password_usr_adm_tkn, sts from adm_tkn_tebel where username_usr_adm_tkn=?" 
      authorities-by-username-query="select username, role from roles where username =? " /> 
    </authentication-provider> 
</authentication-manager> 
Bu

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
       UserDetails userDetail = (UserDetails) auth.getPrincipal(); 
       String admin = userDetail.getUsername(); 

sorunu gibi bir adımı uygulaması bahar güvenlikten adlarını alabilir

olduğunu dayana "id_wlyh" gibi diğer alanları aldınız mı? Nasıl yapılabilir?

cevap

0

kişinin size kendi kimlik doğrulama sağlayıcısı

<authentication-manager> 
     <authentication-provider ref="myprovider" /> 
</authentication-manager> 

sınıf aşağıdaki gibi görünecektir oluşturmanız gerekir:

İstediğiniz gibi birçok alan olarak ekleyerek kullanıcı sınıfı oluşturmak zorunda
@Component("myprovider") 
public class MyProvider extends AbstractUserDetailsAuthenticationProvider { 

    @Autowired 
    private UserDao userdao; 

    @Override 
    public void additionalAuthenticationChecks(final UserDetails arg0, final UsernamePasswordAuthenticationToken arg1) throws AuthenticationException { 
     // Nothing 
    } 

    @Override 
    protected UserDetails retrieveUser(final String username, final UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { 
     MyUser u = userdao.getUser(username); 
     if (u != null) { 
      return u; 
     }else{ 
      throw new BadCredentialsException("user invalid"); 
     } 
    } 

} 

:

public class MyUser extends org.springframework.security.core.userdetails.User { 
} 

Daha sonra yöneticiye erişirken, kendi tanımınıza atabilirsiniz:

Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
MyUser userDetail = (MyUser) auth.getPrincipal(); 

istediğiniz herhangi verilere erişebilecek Bu şekilde

+0

i @Autowired özel UserDao userdao de anlamıyorum üzgünüm; Eğer bir sınıf userDao yapmak zorunda kaldım? Lütfen daha ayrıntılı olarak açıklayın – Zia

+0

Program çalıştırılırken bu hatayı alıyorum "Myprovider adı verilen fasulye yok" tanımlandı \t < kimlik doğrulama-yöneticisi> \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t Zia

+0

UserDao, databa'da kontrol etmek için oluşturmanız gereken bir sınıftır. kullanıcı varsa se. Fasulye myprovider bulunamadı eğer compentScan içinde olduğundan emin olun, aksi takdirde @Component ek açıklama yerine xml içinde fasulye bildirin: .Kimlik doğrulama yöneticisi kullanımda sadece bir kimlik doğrulama sağlayıcısı eskisinin – jpprade