Wie eine URL zu speichern, die von einem Sicherheitsfilter abgelehnt wird, zu gehen, um es nach den Benutzer anmeldet

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

  •  19-08-2019
  •  | 
  •  

Frage

Ich verwende die Anwendungssicherheit für eine Intranet-Anwendung verwaltet.

Ich habe den nächsten Filter in meiner web.xml-Datei:

<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 enthält ein Login-Feld. Wenn sich ein Benutzer anmeldet sie gehen im Intranet auf dem Armaturenbrett. Filter funktioniert gut.

Werfen Sie einen Blick auf die nächste Situation:

  • Jemand bekommt eine E-Mail mit einer Intranet-Seite, wie zum Beispiel: http: // appname .com / corporate / page.do? id = 6
  • klickt er auf den Link, seine Standard-Browser hat ein Cookie gespeichert, er wird automatisch protokolliert, und die Seite wird korrekt angezeigt.

Aber:

  • Jemand bekommt eine E-Mail mit einem Intranet-Link wie: http: // appname .com / corporate / page.do? id = 6
  • Er klickt auf den Link, seine Standard-Browser nicht über eine App Cookie so wird er nicht automatisch protokolliert. Er wird auf dem Anmeldebildschirm weitergeleitet. Er meldet sich, aber er geht auf dem Armaturenbrett anstelle der Seite der Link genannt.

Gibt es eine einfache Möglichkeit, dies zu lösen?

Ich habe im Grunde genommen zwei Ideen:

B) - Verwenden Sie Basic - Container verwaltet Sicherheit, die das Problem lösen

.

A) - Umsetzung in der Authentifizierungs-Mechanismen einen Filter, der die Anfrage abgelehnt URL als Attribut speichert. Legen Sie die abgelehnten url als verstecktes Feld der Login-Box -. - Ändern Sie den Login-Logik das Feld url statt immer Armaturenbrett zu verwenden.

Beide wie ein bisschen Arbeit scheinen? Jeder hat eine bessere Idee?

War es hilfreich?

Lösung

Die meisten Websites Logins erforderlich scheinen, um es mit der Methode A. Zum Beispiel zu tun, auf Stack-Überlauf, wenn Sie Zugriff auf eine Seite erfordert Login Sie /users/login?returnurl=... erhalten umgeleitet, was ein returnurl Feld verursacht als ein verstecktes Feld emittiert wird in der Anmeldeformular aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top