Apprendre à créer des UserDetail Objet au Printemps de Sécurité
J'ai construit mon personnalisée Authenticaton Manager pour le Printemps de Sécurité qui va quelque chose comme ceci
public class AccountAuthenticationProvider implements AuthenticationProvider{
@Autowired
private AuthenticationService authService;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String userName = authentication.getName();
String password = (String)authentication.getCredentials();
if(authService.isValid(userName,password)){
List<GrantedAuthority> grantedAuthorityList = new ArrayList<GrantedAuthority>();
grantedAuthorityList.add(new SimpleGrantedAuthority("ROLE_USER"));
SecurityContext securityContext = new SecurityContextImpl();
return new UsernamePasswordAuthenticationToken(userName,password);
}
return null;
}
public void setAuthService(AuthenticationService authService) {
this.authService = authService;
}
@Override
public boolean supports(Class<?> authentication) {
return true;
}
}
mais comment puis-je créer mon propre UserDetail objet? Je vais l'utiliser pour stocker les compte les valeurs liées
Vous devez vous connecter pour publier un commentaire.
vous avez besoin pour mettre en œuvre UserDetailsService et remplacer loadUserByUsername méthode pour retourner votre personnalisé UserDetails classe.
vérifier les liens ci-dessous:
http://www.javaroots.com/2013/03/how-to-use-custom-dao-classe-in-spring.html
http://www.javacodegeeks.com/2012/08/spring-security-implementing-custom.html
vous avez besoin pour mettre en œuvre UserDetailsService et remplacer loadUserByUsername méthode pour retourner votre personnalisé UserDetails classe. Ce
C'est presque ça!
Le premier argument de
UsernamePasswordAuthenticationToken
est le principe. Le principe est l'objet dans le système que représente la personne (ou chose) qui vient de se connecter dans.Avant l'authentification, le principe est juste de l' (String) nom d'utilisateur parce que c'est toutes les informations que vous avez à ce point. Après la connexion, vous pouvez obtenir d'autres renseignements pour aller avec l'utilisateur.
Printemps offre des interfaces:
User
,UserDetails
etUserDetailsService
pour aider à gérer les utilisateurs et ne Élastiques des trucs avec les utilisateurs, donc si vous faitesMyObject
mettre en œuvreUserDetails
ensuite, vous pouvez obtenir quelques avantages supplémentaires à partir du Printemps de l'environnement, mais il n'est pas nécessaire, vous pouvez coller avec votreMyObject
.Dans vos contrôleurs (au Printemps 4) vous pouvez utiliser le
@AuthenticationPrincipal
à injecter de l'utilisateur de l'objet dans les appels, par exemple: