javaee 自动登录

自动登录参照思想


login..jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/5/24 0024
  Time: 下午 6:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body onload="login()">
    <form id="form" action="login" method="post" >
        <input id="name" type="text" name="name" value=""/>
        <input id="password" type="password" name="password" value=""/>
        自动登录<input type="checkbox" name="check"/>
        <input id="token" type="hidden" name="token">
        <input type="submit" value="login"/>
    </form>
    <script type="text/javascript">
        function login() {
            var cookies = document.cookie;
            var name = cookies.split(";")[0].split("=")[1];
            var token = cookies.split(";")[1].split("=")[1];
            var checkon = cookies.split(";")[2].split("=")[1];
            console.log(name +" "+token+" "+checkon);
            console.log(checkon);

            if(checkon=="on"){
                console.log("yes");
                var nameInp = document.getElementById("name");

                nameInp.value = name;
                console.log(nameInp);
                var tokenInp = document.getElementById("token");
                tokenInp.value = token;
                document.getElementById("form").submit();


            }
        }

    </script>
</body>
</html>

loginservlet.java

package servlet;




import dao.AutoLoginDao;
import dao.impl.AutoLoginImpl;
import util.RandomUtil;

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 java.io.IOException;

@WebServlet(name = "LoginServlet",urlPatterns = {"/login"})
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        String check = request.getParameter("check");
        String token = request.getParameter("token");
        System.out.println("name: "+name+"password: "+password+"check: "+check);
        if(name.equals("admin")&&password.equals("admin")){//此处,应该是判断name和password时候在数据库
            Cookie cookie = new Cookie("name",name);
            cookie.setMaxAge(60*60);
            token = RandomUtil.randomString(10);
            Cookie cookie1 = new Cookie("token",token);
            cookie1.setMaxAge(60*60);
            AutoLoginDao ad = new AutoLoginImpl();
            ad.addAutoLogin(name,token);//将数据放入数据库
            Cookie cookie2 = new Cookie("check",check);
            cookie2.setMaxAge(60*60);
            response.addCookie(cookie);
            response.addCookie(cookie1);
            response.addCookie(cookie2);
            response.getWriter().write("success");
        }else if(token!=null&&!token.equals("")){//token存在且不是为空
            AutoLoginDao ad = new AutoLoginImpl();
            boolean result = ad.selectByNameAndToken(name,token);//判断token是否和数据库一样
            if(result){
                response.getWriter().write("success");
            }else{
                Cookie cookie2 = new Cookie("check","notOn");//防止重复跳转
                response.sendRedirect("login.jsp");
            }
        }else{
            response.sendRedirect("login.jsp");//登录不成功
        }


    }

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

auto_login.sql

create table auto_login(
  id int primary key auto_increment,
  user_id VARCHAR(30)  not null ,
  token text not null
);

具体这边的token需要随机生成,所以需要用一些特别的加密算法,md5等等

猜你喜欢

转载自blog.csdn.net/qq_32296307/article/details/80445518