Bonjour,
j'ai un problème pour faire un pointcut avec spring security.
J'ai une classe abstraite pour mes DAO, avec une interface abstraite également
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public interface AbstractDAO<T> { T getById(final Serializable id); List<T> getAll(); T create(T entity); T update(T entity); void delete (final Long id); }j'ai donc des DAO qui herite de tous ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public class AbstractHibernateDAO<T> extends HibernateDaoSupport { /** code des methode getbyId,getAll,create,update,delete **/ }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public interface compteDAO extends AbstractDAO<Compte> { Compte getByEmail(final String email); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class CompteDAOHibernate extends AbstractHibernateDAO<Compte> implements compteDAO { public final Compte getByEmail(final String email) { /** code **/ } }
donc mon problème est pour faire le pointcut
1. ne semble pas marcher. ( c'étais du pur test )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <global-method-security acces-decision-manager-ref="accesDecisionManager" > <!-- 1 --> <protect-pointcut access="xxx" expression="execution( * com.xxx.dao.*.update(..)" /> <!-- 2 --> <protect-pointcut access="xxx" expression="execution( * com.xxx.dao.CompteDAOHibernate.*(..)" /> <!-- 3 --> <protect-pointcut access="xxx" expression="execution( * com.xxx.dao.AbstractHibernateDAO.*(..)" /> </global-method-security>
2. ne me pointcut que le getByEmail
3. me pointcut bien mon update, mais il va le faire pour toute les dao, donc avec le meme access.
je sent que le problème vient de l’héritage et/ou du type générique.
et j'aimerai bien pouvoir définir des access différent suivant mon DAO pour les méthode de create/update/delete.
La seul solution que je voit pour l'instant est que je crée mon propre voter et que je fasse le tri niveau code, mais j'aimerai bien éviter cela.
j'utilise Spring 3.0.5.RELEASE et Spring security 3.0.5.RELEASE
Il est possible que j'ai des faute de frappe dans le code, le PC ayant le source étant pas celui avec lequel je tape ce sujet.
(pourrai poster vrai code ce soir/demain si nécessaire ).
Merci d'avance pour votre aide.
Partager