0

私はhtmlとjqueryの作業を行っている1つのプロジェクトに取り組んでおり、サーバー側にcgiがありました。ここで、ログイン/ログアウト機能を実装したいと考えていますが、問題は、php のようなスクリプト言語を使用していないことです。jquery.cookie.js を使用して Cookie を生成し、各リクエストと共にサーバーに送信したいと考えています。私の問題は、特定のブラウザーのすべてのページに対して 1 つの Cookie のみを生成して、同じ Cookie をサーバーに送信する方法です。ユーザーがページ名を知っている場合、(http://www.mydomain.com/page のように) 直接アクセスできます。 .html)。私はhtmlしか使っていないので、各ページにすべてのjsとcssを含める必要があります。

同じ目的のための他の代替手段があれば、受け入れられます。

4

1 に答える 1

2

jquery.cookies.js は、ブラウザで Cookie を設定/変更/削除/取得するのに役立ちます (デフォルトのビルトイン インターフェイスは、これにはあまり便利ではありません)。

設定すると、次の各リクエストにその Cookie が自動的に含まれます。Cookie には、特定のパスでのみ使用できる (たとえば、ページに www.example.com/path_with_cookie/* のようなパスがある場合にのみ Cookie を送信するようにブラウザーに指示することができます)、または有効期限が切れる必要がある場合など、複数の設定があります。プラグインのドキュメントを開いて、スクリプトでさまざまなオプションを設定する方法を読んでください。Cookie が設定されると、削除または期限切れになるまで、ドメインやパスなどの要件を満たす要求とともに送信されます。

しかし、サーバー側のコーディングなしでログイン/ログアウトを作成する方法がわかりません。まあ、js/css を使用してブラウザでいくつかの要素を非表示/表示することができますが、サーバーはそれに関与しません (通常、サーバーはユーザーが Cookie を使用してログインしているかどうかを確認し、それに基づいて一部のコンテンツをユーザーに表示するかどうかを決定します) )無駄になります。一部のコンテンツがブラウザーに配信されると、JS/HTML の仕組みを知っている人なら誰でも非表示のコンテンツを見ることができます。さらに、ログイン/パスワードが正しいかどうかを何らかの方法で確認する必要があります-サーバー側のコーディングなしで安全に行う方法がわかりません。

更新:

それでも Cookie をフォームに入れる必要がある場合は、次のようなコードを追加できます。

$(document).ready(function() {
    $('form').live("submit", function(){
       $(this).append($("<input type=\"hidden\" name=\"auth_cookie\">").val($.cookie('auth_cookie')));
    });
});

別の方法 (jquery の新しいバージョンの場合、live現在は非推奨です):

$(document).on("submit", 'form', function(){...});

このコードは送信イベントをキャッチし、送信されたフォームに隠しフィールドを追加します。もちろん、フォームが利用可能なページに追加する必要があります。

于 2012-12-27T12:45:47.180 に答える