登录servlet&用户类

时间:2016-06-19 09:54:30

标签: java jsp servlets

当我获得所有权限的访问权限时登录不起作用,如果我使用普通用户登录,它会将我重定向到/ admin而不是/ app,我试图解决问题,但我没有'我知道我做错了什么。 我想创建一个唯一的管理员,用户名:admin和密码:admin, 我有一个名为admin的boolean属性的User类。 代码如下:

WebFilter for Users:

@WebFilter("/app/*")
public class FiltroRegistro implements Filter {


    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        HttpSession session = req.getSession(false);
        String loginURI = req.getContextPath() + "/login.jsp";


        if (session != null && session.getAttribute("usuario") != null) {

            chain.doFilter(req, res);

        } else {
            res.sendRedirect(loginURI);
        }

    }

WebFilter for admin:

@WebFilter("/admin/*") public class FiltroAdministrador implements
   Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        HttpSession session = req.getSession(false);
        String loginURI = req.getContextPath() + "/login.jsp";

        if (session != null && session.getAttribute("administrador") != null) {

                chain.doFilter(req, res);

        } else {
            res.sendRedirect(loginURI);
        }

    }

登录servlet:

@WebServlet("/FiltroServlet")
public class FiltroRegistroServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("UTF-8");

    String nombreUsuario = request.getParameter("nombreUsuario");
    String contrasenia = request.getParameter("contrasenia");

    GestionUsuarios gestionUsuarios = new GestionUsuarios();

    Usuario admin = gestionUsuarios.registrarAdministrador(nombreUsuario, contrasenia);
    //Usuario admin = gestionUsuarios.registrarAdministrador(nombreUsuario, contrasenia);
    Usuario usuario = gestionUsuarios.registrarUsuario(nombreUsuario, contrasenia);

    if (admin != null) {
        HttpSession session = request.getSession(true);
        session.setAttribute("administrador", admin);

        response.sendRedirect("admin/TablaEventosAdmin");


    } else if (usuario != null) {
        HttpSession session = request.getSession(true);
        session.setAttribute("usuario", usuario);
        response.sendRedirect("app/TablaEventosServlet");
        response.sendRedirect("loginError.jsp");
    } else {
        response.sendRedirect("login.jsp");
    }

}

用户和管理员在业务层中的登录方法,默认情况下为admin创建(全部在同一个类中)

public GestionUsuarios() {
        daoUsuario = new DaoUsuarioHibernate();

        Usuario admin = new Usuario("admin", "admin", true);

        daoUsuario.add(admin);
    } 
public Usuario registrarUsuario(String nombreUsuario, String contrasenia) {
        return daoUsuario.ObtenerUsuarioPorNombreYContrasenia(new Usuario(nombreUsuario, contrasenia, false));

    }

public Usuario registrarAdministrador(String usuario, String contrasenia){

        return daoUsuario.ObtenerUsuarioPorNombreYContrasenia(new Usuario(usuario,contrasenia, true));
    }

The jsp structure, /app for normal users and /admin for all privileges

0 个答案:

没有答案