2012-08-08 4 views
0

J'utilise actuellement shiro et le plug-in de sécurité de tapestry pour gérer les sessions natives et conserver les données. Tout fonctionne bien lors de l'obtention de la session par SecurityUtils.getSubject().getSession(). Cependant, cela signifie que l'application est parsemée de fragments de code spécifique à Shiro. Puisque shiro utilise l'API de session de servlet, y a-t-il un moyen de le faire d'une manière qui soit transparente pour l'application, et j'espère quand même pouvoir utiliser des annotations comme @Persist et @SessionState?Modification du comportement de session par défaut dans la tapisserie

Répondre

0

J'ai décoré le TapestrySessionFactory pour renvoyer une session shiro au lieu du HttpServletSession encapsulé. Les interfaces n'étant pas identiques, une fonction de coercition (très) simple était nécessaire. J'ai exactement ce dont j'avais besoin: le seul code lié à shiro consiste en quelques lignes dans AppModule et une fonction isolée convertissant org.apache.shiro.session.Session en org.apache.tapestry5.services.Session. Dans le reste de l'application, j'utilise les installations de session comme précédemment (y compris les annotations), et ils sont tous gérés par shiro dans les coulisses.

2

j'ai mal compris votre question, mais vous pouvez injecter la demande et l'utiliser pour obtenir une poignée sur la session:

@Inject 
private HttpServletRequest httpRequest; 

httpRequest.getSession(); 

Cela ne vous empêche pas d'utiliser @Persist ou @SessionState.

+0

Mon problème était que je ne voulais pas du tout utiliser les servlets httpSessions. Je l'ai résolu maintenant, merci. –

Questions connexes