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;
}
}