Je suis actuellement en train d'apprendre Struts 2 et je suis en train de construire une application simple où les utilisateurs non vérifiés sont redirigés vers un formulaire de connexion.Rediriger vers une autre action dans un intercepteur dans struts 2
J'ai un formulaire de connexion et d'action fonctionnelle qui prend les informations d'identification des utilisateurs, les vérifie et stocke un objet Utilisateur dans la session mais j'essaie maintenant d'empêcher l'accès aux pages avant que la connexion ne se fasse. ceci avec un intercepteur. Mon problème est que j'ai écrit un intercepteur qui vérifie si l'objet Utilisateur a été enregistré dans la session mais si ce n'est pas le cas, je veux rediriger vers la page de connexion et je ne trouve aucun moyen de le faire sans contourner des entretoises et en utilisant la méthode de HttpServletResponse.sendRedirect
Configuration:
<package name="mypackage" extends="struts-default" namespace="/admin">
<interceptors>
<interceptor name="login" class="my.LoginInterceptor" />
</interceptors>
<default-interceptor-ref name="login"/>
<action name="login" class="my.LoginAction">
<result name="input">/admin/login.jsp</result>
<result name="success" type="redirect">/admin</result>
</action>
<action name="private" class="my.PrivateAction">
<result>/admin/private.jsp</result>
</action>
</package>
le code d'interception:
@Override
public String intercept(ActionInvocation inv) throws Exception {
Map<String, Object> session = inv.getInvocationContext().getSession();
Object user = session.get("user");
if(user == null) {
// redirect to the 'login' action here
}
else {
return inv.invoke();
}
}
Merci, et merci supplémentaires pour les conseils bonus. Comment pourrais-je empêcher l'intercepteur d'attraper l'action de connexion? – 3urdoch
En fait, j'ai travaillé pour moi-même, je viens de mettre dans l'action de connexion. –
3urdoch
Oui, c'est un moyen. – leonbloy