解決微信自動清除緩存,每天都需要重新登錄


問題場景:新版微信會自動清空cookie,導致每天都要重新登錄

解決思路:后端是通過session來獲取用戶是否登錄,而session信息會存在客戶端的cookie里面,然后每次請求接口的時候。又會自動帶上cookie上面的信息,傳給后端。所以我們可以在登錄的時候讓后端把登錄信息傳過來,然后存在localstorage里面,在首頁需要登錄的頁面里面獲取localstorage里面的值,設置在cookie上,這樣在每次進行ajax請求的時候,瀏覽器會自帶將存在cookie上面的用戶信息傳過去,服務器會根據cookie上面的信息去數據庫讀取sessionid做判斷!!!!

login頁面

 flag = false;
            $.ajax({
                url:'ajaxLogin',
                type:'post',
                data:{"nc_token":nc_token,"csessionid":csessionid,"scene":scene,"sig":sig,tel:tel,verifyCode:verifyCode,redirect_url:redirect_url,remeber:1, from : from},
                success: function(res){
                    //console.log(res);
                    if(res.status == 1000){
                        var tipMsg = res.data ? res.data : '登錄成功~';
                        //$.alert('tipMsg');
                        window.localStorage.setItem('username',tel);
                        $('#getVerifyCode').removeClass('btn-blue').addClass('btn-disabled');
                        flag = true;
                        setTimeout(function(){
                            window.location.href = res.data
                        },500);
                        //pobp838totku433ts210d7b2s0
                        var PHPSESSID_cookie =  getCookie("PHPSESSID");
                        var m_enstr = getCookie('m_enstr');
                        if(PHPSESSID_cookie){
                            window.localStorage.setItem("PHPSESSID",PHPSESSID_cookie);
                            window.localStorage.setItem("act_m_enstr",m_enstr);
                        }
                        window.localStorage.setItem("act_login",1);
                        var expires = new Date().getTime() + 14*24*3600*1000;
                        window.localStorage.setItem("expires",expires);
                    }else{
                        $.alert(res.data);
                        flag = true;
                    }
                },
                error: function(){
                    $.alert('出錯啦!');
                    flag = true;
                }
            })

index

    //判斷是否登錄
    var is_login = "{$is_login}";
    if (!is_login) {
        var act_login = window.localStorage.getItem("act_login");
        var expires = parseInt(window.localStorage.getItem("expires"));
        var PHPSESSID = window.localStorage.getItem("PHPSESSID");
        var act_m_enstr = window.localStorage.getItem('act_m_enstr');
        var nowtime = new Date().getTime();
        var PHPSESSID_oldcookie = getCookie("PHPSESSID");
        if (PHPSESSID_oldcookie != PHPSESSID) {
            if (act_login == "1" && nowtime < expires) {
                setCookie("PHPSESSID", PHPSESSID, 14);
                setCookie("m_enstr", act_m_enstr, 14);
                window.location.reload();
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM