Comment stocker une URL rejetée par un filtre de sécurité, pour y accéder après la connexion de l'utilisateur

StackOverflow https://stackoverflow.com/questions/470382

  •  19-08-2019
  •  | 
  •  

Question

J'utilise la sécurité gérée par application pour une application Web Intranet.

J'ai le filtre suivant dans mon fichier web.xml:

<filter>
  <filter-name>employeeAccessFilter</filter-name>
  <filter-class>security.AuthorizationFilter</filter-class>
  <init-param>
      <param-name>roles</param-name>
      <param-value>employee</param-value>
  </init-param>
  <init-param>
      <param-name>onError</param-name>
      <param-value>../index.jsp</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>employeeAccessFilter</filter-name>
   <url-pattern>/corporate/*</url-pattern>
</filter-mapping>

index.html contient une zone de connexion. Lorsqu'un utilisateur se connecte, il accède au tableau de bord de l'intranet. Le filtre fonctionne bien.

Jetez un coup d'œil à la situation suivante:

Mais:

  • Quelqu'un reçoit un courrier électronique contenant un lien vers une page intranet, tel que: http: // appname .com / corporate / page.do? id = 6
  • Il clique sur le lien. Son navigateur par défaut ne contient pas de cookie d'application. Il n'est donc pas automatiquement connecté. Il est redirigé vers l'écran de connexion. Il se connecte mais il accède au tableau de bord au lieu de la page mentionnée dans le lien.

Existe-t-il un moyen simple de résoudre ce problème?

J'ai essentiellement deux idées:

B) - Utilisez Basic - sécurité gérée par conteneur qui résoudra le problème.

A) - Implémenter dans le filtre d'authentification un mécanisme qui stocke l'URL rejetée en tant qu'attribut de demande. - Mettez l'URL rejetée comme un champ caché de la boîte de connexion. - Modifiez la logique de connexion pour utiliser le champ url au lieu de toujours tableau de bord.

Les deux semblent être un peu de travail? Quelqu'un a une meilleure idée?

Était-ce utile?

La solution

La plupart des sites nécessitant une connexion semblent le faire à l'aide de la méthode A. Par exemple, en cas de dépassement de pile, si vous accédez à une page nécessitant une connexion, vous êtes redirigé vers / users / login? returnurl = ... , ce qui provoque l'émission d'un champ returnurl en tant que champ caché dans le formulaire de connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top