如何完全使用过滤器来验证登录信息

时间:2019-04-29 12:49:43

标签: java jsp servlets

运行应用程序时,过滤器始终始终处于运行状态,如何验证登录名并仅在提交后调用过滤器,以及如何准确地检查过滤器中的数据?

我的过滤器

public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain)
        throws IOException, ServletException {

    System.out.println("I'm in the filter");
    HttpServletRequest request2 = (HttpServletRequest) request;
    HttpSession session = request2.getSession();
    Object obj = (Object) session.getAttribute("user");

    if(obj==null) {
        request.getRequestDispatcher("ErrorPage.html").forward(request,response);
    } else {
        chain.doFilter(request,response);
    }}

我的帖子表格

<form action="LoginServlet" method="POST">
<div class="imgcontainer">
    <img src="img_avatar2.png" alt="Avatar" class="avatar">
</div>

<% System.out.println("Entrei no Login"); %>

<div class="container">
    <%--@declare id="uname"--%><%--@declare id="psw"--%><label for="uname"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="uname" required>

    <label for="psw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="psw" required>

    <button type="submit">Login</button>

</div>

<div class="container" style="background-color:#f1f1f1">
    <button type="button" class="cancelbtn">Cancel</button>

</div>

我的问题是,该过滤器如何用于验证登录?我的意思是,我觉得只使用一个Servlet并比较用户名和密码要容易得多,我不完全了解如何在过滤器中处理提交表单。

我应该/可以直接将提交表单发送到过滤器,还是在此通信过程中确实需要一个servlet?

1 个答案:

答案 0 :(得分:0)

首先,您需要知道有一些库可以帮助您避免使用该样板代码,但是在某些情况下,您必须自己编写它。 过滤器是在您请求URL时执行的代码,并且具有一些可供选择的规则,并将您重定向到资源。您可以定义允许访问资源的任何规则。通常,您应该做的是找到一个用户ID(通常从cookie中查找)并查找其角色,每个角色都有其可以访问的资源。通常,它应该存储在数据库中。例如,如果定义的用户具有角色:ROLE_ADMIN,并且ROLE_ADMIN有权访问主页,则用户应访问该主页。如果该用户没有角色(或者,如果您不想,则不是活动用户),则过滤器可以重定向到您定义的未授权页面。请记住,您可以使用会话来存储用户访问权限,而不必在每次用户请求资源时都调用存储库服务。这是有关如何操作的一般思路,如果您需要任何详细信息,可以查看以下链接:

  

https://www.baeldung.com/intercepting-filter-pattern-in-java

     

https://examples.javacodegeeks.com/enterprise-java/servlet/java-servlet-filter-example/

     

https://www.oracle.com/technetwork/java/filters-137243.html