0

セッションが20分後に期限切れになるテーブルにユーザーのリストを表示しましたが、有効期限が切れると、更新せずにログインページに移動せず、ポップアップを表示してログインフォームを表示し、ログイン後に私を維持します同じURL。私はグレイルに取り組んでいます。誰でもそれを助けることができますか?

4

1 に答える 1

0

私は自分でそれを行いました.これは「gracefulSession.js」のjsコードであり、htmlコードを埋め込むページでこのjavascriptを呼び出します..

関数 checkSessionStatus(){

var lStorage = getLocalStorage();
if(lStorage){
    //lStorage.setItem('poleTime',new Date());
    var poleTime = lStorage.getItem("poleTime");
    var parsedTime;
    try{
        parsedTime = new Date(poleTime);
    }catch(e){
    }

    //alert(new Date()-parsedTime)
    //alert(new Date())
    //alert(parsedTime)

//3900000 = 1H5M

    if(parsedTime && (new Date()-parsedTime)<3900000){
        //alert('NCATCH'+parsedTime);
    }else{
        //alert('POINT');
        poleSessionStatus();
    }
}

}

関数 setlatestPoleTIme(){

//alert("SETTING POLE TIME");
var lStorage = getLocalStorage();
if(lStorage){
    lStorage.setItem('poleTime',new Date());
}

}

関数 setCheckSessionTimer(){

var lStorage = getLocalStorage();
var isLoggedOut = false;
if(lStorage){
    if(lStorage.getItem('isLoggedOut')=='true'){
        isLoggedOut = true;
    }
}

//console.log('checkingIfLoggedOut');

if(!isLoggedOut){

    setTimeout ( "setCheckSessionTimer();", 5000);
    //console.log("NOPT LO");
    $('#LoggedoutMessage').hide();
    checkSessionStatus();
}else{

    setTimeout ( "setCheckSessionTimer();", 5000);
    //console.log("KO");
    //alert("You're Logged Out from  other tab");
    $('#LoggedoutMessage').show();

}

}

関数ログアウト(){

//alert("LOGGIN OUT")
var lStorage = getLocalStorage();
if(lStorage){
    lStorage.setItem('isLoggedOut','true');
}

}

関数 resetLoggedOutFLag(){

var lStorage = getLocalStorage();
if(lStorage){
    lStorage.removeItem('isLoggedOut');
}

}

関数 getLocalStorage(){

var storage,fail,   uid;
try {
    uid = new Date;
    (storage = window.localStorage).setItem(uid, uid);
    fail = storage.getItem(uid) != uid;
    storage.removeItem(uid);
    fail && (storage = false);
} catch(e) {}
return storage

}

さて、埋め込むHTMLコード、

<div id="LoggedoutMessage" style="display:none;position:absolute;background:black;height: 200%;width:100%;top: 0;z-index: 10000;opacity: 0.9;">
    <div id="login_box" style="position:fixed;left:38%;top:30%; padding:10px; width: 365px;margin: 0 auto;border: 0px solid #CCC;margin-top: 35px;height: 150px;background: white; border-radius:3px;">
        <div id="login_title">
            <h1>You have been logged out.</h1>
        </div>
        <div id="reLogin">
            <p>Please login to continue.</p>
            <g:link controller="dashBoard" action="index" target="_blank" onclick="logout();">Login</g:link>
        </div>
    </div>
</div>

最後に、html を保存する場所に、この JavaScript コードをその上に置き、script タグを埋め込みます。

関数poleSessionStatus(){

        jQuery.ajax({
            type:'POST',
            data:'',
            url:'<g:createLink action="ajaxCheckSession" controller="dashBoard"/>',
            success:function(data,textStatus){
                //setTimeout ( "checkSession();", 5000);
            },
            error:function(XMLHttpRequest,textStatus,errorThrown){
                $('#LoggedoutMessage').show();

            },
            complete:function(XMLHttpRequest,textStatus){
                $.unblockUI();
            }});
    }
于 2012-07-27T05:13:28.243 に答える