Utilisez HandlerMethodArgumentResolver pour laisser injecter Spring GrantedAuthority dans la méthode du contrôleur. Si un utilisateur peut avoir plus d'une autorité, vous devrez créer une classe pour conserver les droits de l'utilisateur (peut être nommé GrantedAuthorities
). Une fois que vous avez terminé, votre méthode de commande ressemblera à quelque chose comme ceci:
@RequestMapping({"/xyz"})
public String handleXYZRequest(GrantedAuthorities authorities) {
/* use authorities if not null */
...
}
résolveur, vous utiliserez le même code que que vous utilisez actuellement pour obtenir les autorités et il retournera null ou objet GrantedAuthorities
. Si vous utilisez une ancienne version de Spring, utilisez WebArgumentResolver
et enregistrez-la avec AnnotationMethodHandlerAdapter.
L'approche ci-dessus évite la duplication de code et peut être utilisée pour injecter tout ce dont vous avez besoin de SecurityContextHolder
dans les méthodes de contrôleur.
Modifier
Ceci est similaire à l'approche utilisée par effet de serre. S'il vous plaît voir WebConfig, où le principal (qui est l'objet de compte) est injecté dans le contrôleur par le résolveur d'argument.
vous pouvez également utiliser les bons emballages ici: http://stackoverflow.com/a/3412166/26510 –