美文网首页
工具类--cookie操作

工具类--cookie操作

作者: wbpailxt | 来源:发表于2020-01-08 13:59 被阅读0次
    package com.mmall.util;
    
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang.StringUtils;
    
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @Slf4j
    public class CookieUtil {
    
        private final static String COOKIE_DOMAIN = ".happymmall.com";
        private final static String COOKIE_NAME = "mmall_login_token";
    
    
        public static String readLoginToken(HttpServletRequest request){
            Cookie[] cks = request.getCookies();
            if(cks != null){
                for(Cookie ck : cks){
                    log.info("read cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
                    if(StringUtils.equals(ck.getName(),COOKIE_NAME)){
                        log.info("return cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
                        return ck.getValue();
                    }
                }
            }
            return null;
        }
    
        //X:domain=".happymmall.com"
        //a:A.happymmall.com            cookie:domain=A.happymmall.com;path="/"
        //b:B.happymmall.com            cookie:domain=B.happymmall.com;path="/"
        //c:A.happymmall.com/test/cc    cookie:domain=A.happymmall.com;path="/test/cc"
        //d:A.happymmall.com/test/dd    cookie:domain=A.happymmall.com;path="/test/dd"
        //e:A.happymmall.com/test       cookie:domain=A.happymmall.com;path="/test"
    
        public static void writeLoginToken(HttpServletResponse response,String token){
            Cookie ck = new Cookie(COOKIE_NAME,token);
            ck.setDomain(COOKIE_DOMAIN);
            ck.setPath("/");//代表设置在根目录
            ck.setHttpOnly(true);
            //单位是秒。
            //如果这个maxage不设置的话,cookie就不会写入硬盘,而是写在内存。只在当前页面有效。
            ck.setMaxAge(60 * 60 * 24 * 365);//如果是-1,代表永久
            log.info("write cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
            response.addCookie(ck);
        }
    
        public static void delLoginToken(HttpServletRequest request,HttpServletResponse response){
            Cookie[] cks = request.getCookies();
            if(cks != null){
                for(Cookie ck : cks){
                    if(StringUtils.equals(ck.getName(),COOKIE_NAME)){
                        ck.setDomain(COOKIE_DOMAIN);
                        ck.setPath("/");
                        ck.setMaxAge(0);//设置成0,代表删除此cookie。
                        log.info("del cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
                        response.addCookie(ck);
                        return;
                    }
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:工具类--cookie操作

          本文链接:https://www.haomeiwen.com/subject/wmxsactx.html