java USES Filter to implement the automatic login method

  • 2020-06-19 10:26:45
  • OfStack

This article is an example of java to share the implementation of automatic login specific code for your reference, the specific content is as follows

When you check (remember login status), save the username and password with cookie. If not checked, cookie fails. All pages must go through the filter of autoLoginFilter.java. In this category, you must determine that cookies is not null, get all cookie, get name is user cookie, verify the user name and password, if not null, then store user in session. In ES16en. java, username and password parameters are obtained to verify dao. If it is not empty, it is put into seesion to jump to the page. Create the cookie object. setpath("/") means that all paths under this application can access this cookie. For a user who has logged in correctly, if he/she visits another page again, he/she must pass through autoLoginFilter again. At this point, it is determined whether user in current session is null or not. For ** login. jsp pages, do not go through autoLoginFilter.

package com.learning.web.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.learning.domain.User;
import com.learning.service.UserService;

@WebServlet("/servlet/loginServlet")
public class LoginServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  String autologin = request.getParameter("autologin");
  
  UserService userService=new UserService();
  User user = userService.findUser(username, password);
  //user Don't for null , the login is successful 
  if (user!=null) {
  // create cookie To save user information 
  Cookie cookie=new Cookie("user", user.getUsername()+"&"+user.getPassword());
  cookie.setPath("/");
  //autologin Don't for null , remembers the login status 
  if (autologin!=null) {
   cookie.setMaxAge(1*60*60*24);//1 Effective time of day 
  }
  else {
   cookie.setMaxAge(0);
  }
  response.addCookie(cookie);
  request.getSession().setAttribute("user", user);
  request.getRequestDispatcher("/home.jsp").forward(request, response);
  }else {
  response.sendRedirect(request.getContextPath()+"/homeLogin.jsp");
  }
  
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 doGet(request, response);
 }

}

package com.learning.web.filter;

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.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;

import com.learning.domain.User;
import com.learning.service.UserService;

@WebFilter(urlPatterns="/*",initParams={@WebInitParam(name="autologin",value="login"),@WebInitParam(name="",value="")})
public class AutoFilter implements Filter{

 private FilterConfig filterConfig;
 @Override
 public void destroy() {
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
  throws IOException, ServletException {
 //  Converting objects 
 HttpServletRequest httpServletRequest = (HttpServletRequest) request;
 HttpServletResponse httpServletResponse = (HttpServletResponse) response;
 //  Get the path to access 
 String uri = httpServletRequest.getRequestURI();
 String contextPath = httpServletRequest.getContextPath();
 uri = uri.substring(contextPath.length() + 1);
 //  Get the initialization parameters 
 String login = filterConfig.getInitParameter("autologin");
 System.out.println(" Direct access path: "+login);
 //  Does not contain "login" The path is filtered   ( xxxlogin.jsp  No automatic login required) 
 if (!uri.contains(login)) {
  HttpSession session = httpServletRequest.getSession();
  User u = (User) session.getAttribute("user");
  if (u != null) {
  System.out.println("session Don't for null");
  chain.doFilter(request, response);
  } else {

  //  Process business logic 
  // 1. To obtain cookie  get User The information of 

  String username = "";
  String password = "";
  UserService userService = new UserService();
  Cookie[] cookies = httpServletRequest.getCookies();
  for (int i = 0;cookies!=null&& i < cookies.length; i++) { 
   if ("user".equals(cookies[i].getName())) {
   String string = cookies[i].getValue();
   String[] values = string.split("&");
   username = values[0];
   password = values[1];
   User user = userService.findUser(username, password);
   
   //  If it is not empty, put it in session
   if (user != null) {
    System.out.println(" Automatic login ");
    httpServletRequest.getSession().setAttribute("user", user);
   }
   }
  }
  }
 }
 // 2. release 
 chain.doFilter(request, response);
 }


 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
 
 this.filterConfig=filterConfig;
 
 }

}

Related articles: