Olá Pessoal!
Tenho um sistema e nele fiz controle de acesso por sessão, quando usuário loga no sistema é mostrado para o mesmo uma tela de menu com as permissões que foram concedidas para este usuário.
Agora caso um usuário descubra o endereço de uma pagina do sistema em que ele não tenha acesso, e este usuário digita o endereço no browser o mesmo consegue acessar a pagina onde ele não tem permissão.
Como faço para corrigir isto?
Abaixo esta o código de acesso ao sistema:
public class Logar extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String usuario = request.getParameter("usuario");
String senha = request.getParameter("senha");
RequestDispatcher rd = null;
HttpSession sessao = request.getSession();
UsuarioDAO usuarioDAO = new UsuarioDAO();
Usuarios usuarios = usuarioDAO.getUsuario(usuario, senha);
if(usuarios != null && usuarios.getNivel() == 1){
sessao.setAttribute("sessaoUsuario", usuario);
sessao.setAttribute("nomeCompleto", usuarios.getNomeCompleto());
sessao.setAttribute("nome", usuarios.getUsuario());
rd = request.getRequestDispatcher("/index.jsp");
rd.forward(request, response);
}else if (usuarios != null && usuarios.getNivel() == 2){
sessao.setAttribute("sessaoUsuario", usuario);
sessao.setAttribute("nomeCompleto", usuarios.getNomeCompleto());
sessao.setAttribute("nome", usuarios.getUsuario());
rd = request.getRequestDispatcher("/index1.jsp");
rd.forward(request, response);
}else if (usuarios != null && usuarios.getNivel() == 3){
sessao.setAttribute("sessaoUsuario", usuario);
sessao.setAttribute("nomeCompleto", usuarios.getNomeCompleto());
sessao.setAttribute("nome", usuarios.getUsuario());
rd = request.getRequestDispatcher("/index2.jsp");
rd.forward(request, response);
}else{
request.setAttribute("mensagem", "Usuario ou Senha Invalido!");
rd = request.getRequestDispatcher("/login.jsp");
rd.forward(request, response);
}
}
Abaixo está o código de um servlet onde um determinado usuário não tem acesso. (LEMBRANDO QUE É NESTE CÓDIGO QUE DESEJO COLOCAR O BLOQUEIO PARA O USUÁRIO SEM PERMISSÃO):
public class PedidosPendentes extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
int numPagina = 1;
if(request.getParameter("numpagina") != null)
numPagina = Integer.parseInt(request.getParameter("numpagina"));
VendaDAO vendaDAO = new VendaDAO();
try {
String ordenacao = request.getParameter("ordenacao");
if(ordenacao == null)
ordenacao = "vencodigo";
List listaPedidosPendentes = vendaDAO.getListaVendaPendentePaginada(numPagina, ordenacao);
String qtdTotalPendente = vendaDAO.totalRegistrosPendentes();
request.setAttribute("sessaoPedidosPedentes", listaPedidosPendentes);
request.setAttribute("sessaoTotalPedidosPedentes", qtdTotalPendente);
RequestDispatcher rd = request.getRequestDispatcher("/pedidospendentes.jsp");
rd.forward(request, response);
} catch (SQLException ex) {
Logger.getLogger(PedidosPendentes.class.getName()).log(Level.SEVERE, null, ex);
}
}
Eu havia feito isto, mas não funcionou:
public class PedidosPendentes extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Usuarios usuarios = new Usuarios();
if(usuarios.getNivel() == 1){//este usuario pode acessar este servlet
int numPagina = 1;
if(request.getParameter("numpagina") != null)
numPagina = Integer.parseInt(request.getParameter("numpagina"));
VendaDAO vendaDAO = new VendaDAO();
try {
String ordenacao = request.getParameter("ordenacao");
if(ordenacao == null)
ordenacao = "vencodigo";
List listaPedidosPendentes = vendaDAO.getListaVendaPendentePaginada(numPagina, ordenacao);
String qtdTotalPendente = vendaDAO.totalRegistrosPendentes();
request.setAttribute("sessaoPedidosPedentes", listaPedidosPendentes);
request.setAttribute("sessaoTotalPedidosPedentes", qtdTotalPendente);
RequestDispatcher rd = request.getRequestDispatcher("/pedidospendentes.jsp");
rd.forward(request, response);
} catch (SQLException ex) {
Logger.getLogger(PedidosPendentes.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Alguém pode me ajudar?