Verificação de usuário logado no WW

4 respostas
M

pessoal, tenho algumas dúvidas… quero fazer a verificação de um usuário logado, ou seja, se não existe um objeto User representando o usuario na sessão, deve ser dado um dispatcher pra /login.jsp por ex… Ok, primeira dúvida:

1º. Posso fazer essa checagem em um interceptor no WW (estou usando WW…), pelo menos, é uma das finalidades do interceptor segundo a documentação. Porém, o interceptor só vai verificar se o usuário esta logado quando a requisição for para uma Action, ou seja, se eu tenho uma requisição direta pra um JSP ele não checa… E quero que para acessar qualquer coisa, seja exigido um login (objeto user na sessão).

2º. Se eu fizer essa verificação de login no interceptor, tem como eu dar um dispatcher para a tela de login caso o usuario não esteja logado? Digo, na documentação, a única coisa que vejo o interceptor fazer depois de processar oque tiver que ser processado é chamar um invoke() no objeto ActionInvocation que recebe como parâmetro no seu método intercept()… Isso me fez pensar: “Po, mesmo o usuário não estando logado, ele vai chamar este invoke e vai direcionar pra action que não deveria ser chamada?”

…então, pensei como solução, fazer um Filter puro no DD que filtrasse *… e nesse filter eu testaria se tem o objeto user na sessão… mas ai, eu nao estaria mais usando o interceptor do WW… mas ae… não sei se ta certo usar Filter, tem como ele retornar erro em mandar pra um /login.jsp caso o usuario nao esteja logado? Gostaria de opniões, e se possivel soluções… :slight_smile:

4 Respostas

Diogenes

Já utilizei essa verificação com Servlet Filters, e funcionou numa boa…Seria apropriado q vc escondesse suas .jsps do acesso direto do usuário, mas caso não seja possível vc pode filtra-las tbém…

Não sei, mas acho q seria possível vc fazer isso com interceptors do WW tbém…
Obtendo o objeto request pela ActionInvocation no método intercept, vc poderia redirecionar essa chamada e fazer o q for necessário…

_fs

Cara, basta não chamar invocation.invoke(). Ao invés disso, no interceptor, faça um return “LOGIN” e pronto :smiley:

Mas quanto às páginas JSP … bem … por que você está fazendo requisições para páginas JSP??

M

LIPE, é q eu quero q os JSPs tb estejam protegidos… então, como o Diogenes disse, eu pensei em deixar os JSPs em uma pasta q o usuario deslogado não tivesse acesso direto, só a app… mas eu ainda pensei em ter um local centralizado q tivesse essa lógica, para qualquer coisa q o usuário tentasse recuperar do servidor… por isso pensei num Filter…

por ex… tenho uma DoStuffAction, q só pode ser acessada se o cara ta logado… td bem, implemento um interceptor pras actions pra testar isso, mas, e se o cara faz um get direto para /app/foo/pagina.jsp? esse interceptor não vai ser invocado… e eu não queria ter q colocar includes em todos os meus JSPs só pra ver se o cara ta logado… queria isso centralizado num componente só

Diogenes

E eu achando q a coisa era um pouco mais complicada…Bem, acho q tenho q ler umas coisas de WW novamente…
Tenho acordado com o choro das focas ultimamente! E isso não é bom… :smiley:

Cria um servlet filter com o pattern “*.jsp” que redirecione pra página de login…

Criado 25 de fevereiro de 2005
Ultima resposta 25 de fev. de 2005
Respostas 4
Participantes 3