P2P后台管理系统

P2P后台管理系统七天内免登陆

如果用户登录成功,判断是否勾选了7天内免登陆,如果勾选了,将用户名和密码放到cookie中,下次使用该浏览器访问的时候,直接从浏览器中读取用户名和密码,自动为用户登录。

⒈在16-p2p-admin的com.bjpowernode.p2p.admin.cookie包下创建MyCookieUtil类,并创建addCookie方法,用于向浏览器放cookie

public class MyCookieUtil {
    /**
     * 向浏览器中放cookie
     */
    public static void addCookie(HttpServletRequest request,HttpServletResponse response,
                                 String cookieName,String cookieValue){
        Cookie cookie = new Cookie(cookieName,cookieValue);
        //7天
        cookie.setMaxAge(7*24*60*60);
        //将cookie放到项目的上下文根下
        cookie.setPath(request.getContextPath());
        //通过response向浏览器响应cookie
        response.addCookie(cookie);
    }
}

⒉在16-p2p-admin的IndexController的login方法中,加判断

else{
    //登陆成功
    //判断是否勾选了7天内免登陆
    if(freeLogin){
        //将用户名和密码放到cookie中
        MyCookieUtil.addCookie(request,response,Constants.COOKIE_USERNAME,userName);
        MyCookieUtil.addCookie(request,response,Constants.COOKIE_PASSWORD,password);
    }
    //将用户信息放到session中
    request.getSession().setAttribute(Constants.SESSION_USER,userInfo);
    returnObject.setErrorCode(Constants.ONE);
    returnObject.setErrorMessage("账号或者密码不匹配");
    return returnObject;
}

⒊在Constants类中添加cookie中用于存放用户名和密码的名字常量

//cookie中存放用户名的常量名
public static final String COOKIE_USERNAME = "sn";
//cookie中存放密码的常量名
public static final String COOKIE_PASSWORD = "wd"

⒋浏览器访问登录页面,并勾选7天内免登陆,登录成功后,测试cookie是否设置成功

⒌在16-p2p-admin的MyCookieUtil类中创建getCookie方法,用于获取浏览器中携带的cookie

/**
 * 获取浏览器中携带cookie
 */
public static String getCookie(HttpServletRequest request, String cookieName) {
    String cookieValue = null;
    Cookie[] cookies = request.getCookies();
    if(cookies != null){
        for (Cookie cookie : cookies) {
            //如果遍历出的cookie名字就是你要获取的cookie名
            if(cookie.getName().equals(cookieName)){
                cookieValue = cookie.getValue();
                break;
            }
        }
    }
    return cookieValue;
}

⒍修改16-p2p-admin的IndexController的index方法,实现自动登录

@RequestMapping("/")
public String index(HttpServletRequest request,Model model){
    //读取浏览cookie中携带的用户名和密码,然后自动登录
    String userName = MyCookieUtil.getCookie(request,Constants.COOKIE_USERNAME);
    String password = MyCookieUtil.getCookie(request,Constants.COOKIE_PASSWORD);
    //如果cookie中携带了用户名和密码并且不为null
    if(StringUtils.isNotEmpty(userName)&&StringUtils.isNotEmpty(password)){
        //通过model将用户名和密码传递到index.jsp页面,并传递一个免登陆标记
        model.addAttribute("userName",userName);
        model.addAttribute("password",password);
        //是否免登陆标记,1为免登陆
        model.addAttribute("loginFlag",1);
    }
    return "index";
}

⒎在index.jsp页面中,给用户名和密码加value属性

⒏页面加载完成之后,判断是否为免登陆

//判断是否为免登陆
var loginFlag = "${loginFlag}";
if (loginFlag == "1"){
    login();
}

⒐修改index.jsp中的login函数,如果是自动登录,密码从后台获取的就是加密的,所以不需要加密

var loginFlag = "${loginFlag}";
if (loginFlag !="1"){
    //MD5加密
    password = $.md5(password);
}

⒑浏览器访问测试

全部教程