0

コンテンツは、main_contentjQuery Ajax を介して領域に読み込まれます。

main_contentエリア外はloginリンクです。

このリンクをクリックすると、フォームがmain_contentエリアに読み込まれ、送信されると Beaker でログイン認証が実行されます。成功すると、管理ページがmain_contentエリアにロードされます。

承認が成功した後 login、リンクをリンクに変更したい。logout

次のような方法で、ビーカーのセッション ステータスに基づいて div を表示/非表示にする方法はありますか。

if (beaker.session.id) {
    $('#login').hide();
    $('#logout').show();
}

ログインの成功を扱う jQuery ブロックでこれを呼び出し、ログアウトを扱うブロックの div を交換します。

編集

Firebug では、ログインPOST応答で、次"Cookies" > "Received Cookies"のリストにアクセスして表示できます。

beaker.session.id

このリンクを右クリックして を選択する"Use in Command Line"と、コマンド ライン領域に次のように表示されます。

$p

次に、Firebug コマンド ライン領域で次のコマンドを実行すると、指定されたメッセージが表示されたアラート ポップアップが表示されます。

if ($p) {alert("you have an id!")}

そのため、ログインを処理するコードにこれを追加しようとしましたが、アラートが表示されませんでした:

<script>
$(document).on("submit","#login", function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/login',
data: $(this).serialize(),
dataType: 'json',
success: function(results) {
$("#main_content").html("");
$("#main_content").append(results.content);
href = results.title;
history.pushState('', 'New URL: '+href, href);
reinit1();
reinit2();
reinit3();
if ($p) { // <-- here is the alert
alert("Yes you have an ID!")
}
}
});
});
</script>

エラーが発生します:

ReferenceError: $p is not defined
4

1 に答える 1

0

beaker.session.idCookieへのアクセス方法に関する解決策が見つからなかったので、ログイン成功時にjQuery Cookielogoutを作成し、新しく作成されたログインが存在する場合にリンクを表示する if ステートメントを作成しました (Cookie を削除します)。プロセスを逆にするためのログアウト時):

<script>
// login processing as shown above
reinit1();
reinit2();
reinit3();
$.cookie('logged-in', "YES", { path: '/'}); // set cookie and assign name and value
if ($.cookie('logged-in') == "YES") { //  check the value of the cookie
$('.login').hide();
$('.logout').show();
}
}
}
});
});
</script>
于 2013-11-23T05:33:30.343 に答える