2016-02-25 6 views
1

J'essaie d'intégrer à la fois la sécurité Oauth et la sécurité du ressort acl.@Post Filter ne filtre pas la méthode renvoyée collection à l'aide de la sécurité de ressort acl et oauth

ci-dessous au lieu de gestionnaire d'expression oauth

<sec:global-method-security pre-post-annotations="enabled" proxy-target- class="true"> 
<sec:expression-handler ref="oauthExpressionHandler" /> 
</sec:global-method-security> 

I utilisé le gestionnaire d'expression suivant acl configuration

comme expliqué dans http://krams915.blogspot.in/2011/01/spring-security-3-full-acl-tutorial_30.html.

Je suis capable de faire des entrées acl dans table. Mais en utilisant le @PostFilter les objets retournés par la méthode ne sont pas filtrés en utilisant l'autorisation acl.

peut aider quelqu'un s'il vous plaît

+0

La balise 'global-0method-security' est dans le même contexte que la classe/bean qui contient la (les) méthode (s) annotée (s) @ PostFilter. Si non, la sécurité ne fonctionnera pas. –

+0

Merci denium pour votre aide. Le projet contient des modules de service, dao et webapp maven.J'ai utilisé @PostFilter dans le service layer.Even j'ai essayé d'utiliser l'annotation PreAuthorize dans le contrôleur dans la couche de l'application Web elle-même.Mais ça ne fonctionnait toujours pas – anu

+0

Ce n'est pas une réponse. Indépendamment de cela même si c'est dans le même contexte et que vous scannez deux fois les mêmes composants (c'est-à-dire que le même composant scanne à la fois le 'ContextLoaderListener' et' DispatcherServlet' rendra la configuration inutile.) –

Répondre

1

Dans ma configuration j'ai fait deux erreurs qui ont fait @PostFilter inactive.

  1. Raconté par Denim dans les commentaires ci-dessus je charge scan qui deux fois, une fois par servlet répartiteur et encore i chargé xml servlet répartiteur utilisation d'un chargeur de contexte listener.With ce changement, j'ai pu détecter l'annotation dans le paquet où i J'ai déclaré le contexte dans le module d'application Web. Mais dans mon module de service, l'annotation n'était pas détectée.

2 la question dans ma couche de service est

j'avais comme ci-dessous et l'annotation appliqué ma classe de service comme ci-dessous

@Service("a") 
@Transactional  
Class A{ 

public List<Users> getUsers() { 
getNames(); 
} 

@PostFilter("hasPermission(filterObject,'edit')") 
public List<Users> getNames() { 

} 

L'annotation ne sera pas considéré comme les deux méthodes seront en le même proxy peut se référer

l'adresse suivante

Spring AOP not working for method call inside another method