Come archiviare un URL che viene rifiutato da un filtro di sicurezza, per accedervi dopo che l'utente ha effettuato l'accesso

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

  •  19-08-2019
  •  | 
  •  

Domanda

Uso la sicurezza gestita dall'applicazione per un'applicazione Web Intranet.

Ho il prossimo filtro nel mio file 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 contiene una casella di accesso. Quando un utente accede, passa alla dashboard della rete Intranet. Il filtro funziona bene.

Dai un'occhiata alla situazione successiva:

  • Qualcuno riceve un'email con una pagina Intranet, ad esempio: http: // appname .com / Corporate / page.do? id = 6
  • Fa clic sul collegamento, il suo browser predefinito ha un cookie memorizzato, viene automaticamente registrato e la pagina viene visualizzata correttamente.

Ma:

  • Qualcuno riceve un'email con un link alla pagina Intranet come: http: // appname .com / Corporate / page.do? id = 6
  • Fa clic sul collegamento, il suo browser predefinito non ha un cookie dell'app, quindi non viene automaticamente registrato. Viene reindirizzato alla schermata di accesso. Accede ma va nella dashboard anziché nella pagina menzionata nel link.

C'è un modo semplice per risolvere questo?

Ho fondamentalmente due idee:

B) - Usa base: sicurezza gestita dal contenitore che risolverà il problema.

A) - Implementare all'interno del filtro di autenticazione un meccanismo che memorizza l'URL rifiutato come attributo di richiesta. - Inserisci l'URL rifiutato come campo nascosto della casella di accesso. - Modifica la logica di accesso per utilizzare l'URL del campo anziché sempre il dashboard.

Entrambi sembrano un po 'di lavoro? Qualcuno ha un'idea migliore?

È stato utile?

Soluzione

La maggior parte dei siti che richiedono accessi sembrano farlo utilizzando il metodo A. Ad esempio, su Stack Overflow, se si accede a una pagina che richiede l'accesso, si viene reindirizzati a /users/login?returnurl=..., che provoca l'emissione di un campo returnurl come campo nascosto nel modulo di accesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top