Como armazenar um url que é rejeitada por um filtro de segurança, para ir a ele depois de o usuário efetuar login
-
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:
- alguém recebe um e-mail com uma página de intranet, tais como: http: // appname .com / corporate / page.do? id = 6
- Ele clica no link, seu navegador padrão tem um cookie armazenado, ele é automaticamente registrado, ea página é exibida corretamente.
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?
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.