Como armazenar um url que é rejeitada por um filtro de segurança, para ir a ele depois de o usuário efetuar login

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

  •  19-08-2019
  •  | 
  •  

Pergunta

Eu uso gerenciado de segurança pedido de uma aplicação web Intranet.

Eu tenho o próximo filtro no meu arquivo 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 contém uma caixa de login. Quando um usuário faz em vão para o painel da intranet. Filtro funciona bem.

Dê uma olhada para a próxima situação:

Mas:

  • alguém recebe um e-mail com um link de página da intranet, tais como: http: // appname .com / corporate / page.do? id = 6
  • Ele clica no link, o navegador padrão não tem um cookie de aplicativo para que ele não é registrado automaticamente. Ele é redirecionado para a tela de login. Ele registra no mas ele vai para o painel de instrumentos da página mencionado no link.

Existe uma maneira fácil de resolver isso?

Eu tenho basicamente duas idéias:

B) - Uso Básico -. Contêiner gerenciado de segurança que vai resolver a questão

A) - Implementar dentro do filtro de autenticação um mecanismo que armazena a url rejeitado como atributo pedido. - Coloque a url rejeitado como um campo escondido da caixa de login. - Alterar a lógica de login para usar a url campo em vez de sempre painel.

Ambos parecer um pouco de trabalho? Alguém tem uma idéia melhor?

Foi útil?

Solução

A maioria dos sites que requerem logins parecem fazê-lo utilizando o método de A. Por exemplo, no Stack Overflow, se você acessar uma página que exigem login, você redirecionado para /users/login?returnurl=..., o que provoca um campo returnurl a ser emitido como um campo escondido no formulário de login.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top