2016-07-12 33 views
0

我想在我的自定義「userDetail」對象中存儲附加信息,但我不確定何時將信息添加到對象中。它需要通過登錄後發生的每個方法(JWT令牌登錄)通過SecurityContextHolder.getContext().getAuthentication().getInformation() 訪問每個方法都可以訪問我想在設置它在我的自定義AuthenticationController生成令牌的時間周圍,但這是很難的,因爲引用類型在這一點上是爲userDetails,不customUserDetails:我可以在哪一點添加自定義信息到userDetails?

UserDetails userDetails = this.userDetailsService.loadUserByUsername(authenticationRequest.getUsername()); 
//TODO setInformation 
String token = this.tokenUtils.generateToken(userDetails); 

什麼是認證/授權過程中添加此類信息的最佳點,我會怎麼做最好呢?

回答

0

經過進一步研究,用自定義數據填充用戶對象的最佳時間點似乎是UserDetails接口的自定義實現的構造函數,同時爲User對象設置了權限和其他數據。例如:

public SpringSecurityUser(Long id, String username, String password, String email, Date lastPasswordReset, 
          Collection<? extends GrantedAuthority> authorities) { 
    this.setId(id); 
    this.setUsername(username); 
    this.setPassword(password); 
    this.setEmail(email); 
    this.setLastPasswordReset(lastPasswordReset); 
    this.setAuthorities(authorities); 
    this.setMyInfo(Information); 
    } 

這最初是我的一個問題,因爲該方法設置的信息就是這麼做的基礎上登錄的校長,這是不可能的,因爲在登錄過程中的那個時候,主要是被創建。

相關問題