Je travaille avec Restful API (avec plusieurs URL) en utilisantSpring 3.1.2, et souhaitez appliquer des filtres de sécurité par demande qui utilise à la fois les données de l'utilisateur authentifié "principal" et les données envoyées par la demande.
Exemple:
valider accountId à partir de l'URL de la demande:
http://www.foo.com/accountRecords?accountId=23
avec données principales principal.accountId = 23
.
Je sais que cela peut être fait depuis les méthodes @requestMapping, mais je veux le faire. à l'extérieur la méthode réelle, donc il sera maintenable et configurable sans interférer avec la logique métier.
Mais je n’ai trouvé aucun conseil à ce sujet ..
Je crois que cela devrait ressembler à quelque chose comme:
@PreAuthorize("principal.accountId == requestParam.accountId")
Réponses:
0 pour la réponse № 1Je pense que vous recherchez des filtres pour filtrer la demande et la réponse. Au printemps, vous pouvez utiliser interceptors
dans ce but.
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession(false);
String requestParam = request.getParameter("your request param");
}
}
Enfin, vous devez configurer ces intercepteurs dans votre fichier context.xml:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.MyInterceptor" />
</mvc:interceptor>
</mvc:interceptors>