Pessoal,
Estou com um probleminha na utilização de filtros aqui, deve ser bobeira, mas não estou coseguindo achar o erro.
Criei uma área restrita apenas para usuários com perfil de administrador, se eu logar com este tipo de usuário, deslogar e logar novamente com um usuário normal e tentar acessar a ação restrita, pela URL, eu continuo tento acesso, porém se eu fizer o mesmo processo, mas ao inves de tentar acessar diretamente pela URL, eu acessar por link, eu sou bloqueado, como deve ser. Não estou entendendo porque continuo com acesso quando vou pela URL, quero que o usuario normal nao acesse a area restrita nem por link nem pela URL. Alguem pode me ajudar? web.xml<filter>
<filter-name>Filtro Administrador</filter-name>
<filter-class>catalogo.controle.seguranca.FiltroAdministrador</filter-class>
</filter>
<filter-mapping>
<filter-name>Filtro Administrador</filter-name>
<url-pattern>/usuarios.do</url-pattern>
</filter-mapping>
package catalogo.controle.seguranca;
import catalogo.modelo.Usuario;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class FiltroAdministrador implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpSession sessao = ((HttpServletRequest) request).getSession();
Usuario usuario = (Usuario) sessao.getAttribute("usuario");
if( usuario == null )
{
((HttpServletResponse) response).sendRedirect("/Catalogo/logar.do");
}
else if ( usuario.getTipoUsuario().getTipo().equals("admin") )
{
chain.doFilter(request, response);
}
else
{
((HttpServletResponse) response).sendRedirect("/Catalogo/acessoNegado.do");
}
}
public void destroy() {
}
}
LogoutAction:
[code]package catalogo.controle.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class LogoutAction extends org.apache.struts.action.Action {
/**
* This is the action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws java.lang.Exception
* @return
*/
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
request.getSession().invalidate();
return mapping.findForward("logout");
}
}
Sera que nao estou fazendo o logout corretamente?