9

ユーザーがログインしているかどうか、またはJavaScriptから匿名であるかどうかを判断したい...

私はこの質問を見つけましたが、それはphpコードであり、ログイン時に保存されるlogged_inというセッション変数があるかどうか、またはそれが単にその人が自分で実装したものであるかどうかはわかりませんでした.

おそらくajaxを使用して、ユーザーがjavascriptからログインしているかどうかを確認する方法を知っている人はいますか?

編集: Asp.Net MVCを実行しています。申し訳ありませんが指定する必要がありました

これは、クライアント側の ajax ログインを実装できるようにするためです。ページが読み込まれるときに、ユーザーがログインしているかどうかを知る必要があるため、<asp:LoggedInView>jquery を使用してコントロールに似たものを実装できます。

ありがとう、
マット

4

7 に答える 7

10

JavaScript からセッション保存データを読み取ることはできません。

これを行う簡単な方法は、次のように、PHP から JS var を作成することです (Cookie ソリューションよりも簡単です)。

if ($_SESSION['logged_in'] == 1) {
    echo '<script type="text/javascript">var logged_in=true;</script>';
} else {
    echo '<script type="text/javascript">var logged_in=false;</script>';
}

次に、JS は単純にネイティブlogged_in変数をチェックして、ユーザーがログインしているかどうかを確認します。

<script type="text/javascript">
    if (logged_in) {
        alert("My user is logged in!");
    }
</script>
于 2009-07-31T14:44:16.097 に答える
6

[免責事項] これが「悪い習慣」であるというコメントを多くの人から受け取っているので、これだけは言っておきます。ポスターはするつもりです。私たちが知っている限りでは、彼は他のすべてのことを 100% 正確かつ安全に行っており、javascript からそれを取得する方法があるかどうかを尋ねていました。私が以下に行ったことは、彼が要求したことをどのように達成するかについての私の最良のアイデアを提供するものです. [/免責事項]

PHP、または使用しているバックエンド言語に Cookie を設定し、JavaScript で読み取ることができます。

document.cookie

そのような単純な。ログインした Cookie の名前の Cookie 文字列を検索する必要があります。

これを使用して Cookie を設定し、javascript を介してログインすることもできます (ただし、おそらく最良のアイデアではありません)。

JavaScript Cookie アクセスの概要については、こちらを参照してください。

[編集]

セッション情報にアクセスできるクライアント スクリプトの問題と、元の質問で提案されている ajax の使用の可能性に対処するには:

はい、ajax 呼び出しは、これを確認する非常に簡単な方法です。私はどちらかというと jQuery 派なので、ajax の経験はそこにありますが、基本的には、バックエンド関数に対して ajax 呼び出しを行い、そのバックエンド関数は「loggedin」セッション変数をチェックして、true または false を返すだけです。

また、jQuery を使用しているとのことなので、 jQuery の Cookie に簡単にアクセスするには、このページを参照してください。[/編集]

于 2009-07-31T14:38:11.100 に答える
2

これは通常、サーバー側言語で実装されるソリューションです。JS を使用すると、少なくとも、その情報を保存する Cookie をクライアントに設定できます。

ただし、Ajax では、ユーザーがログに記録されているかどうか (DB へのアクセス、セッション変数など) を確認するページ (check_login.jsp/.apsx など) が必要であり、ログが記録されている場合は (JSON 経由で) JS に戻ります。その情報と、たとえば DIV を緑色で照らす...

そう:

check_login.aspx--> 経由で情報を返しますResponse.Write("{user_logged:true}");

login.aspxJSを使用したHTMLコードから、xmlhttpすでにXMLHttpRequestオブジェクトのインスタンスであるAJAX呼び出しが行われます...

var logged = JSON.parse(xmlhttp.responseText); // don't use eval
if(logged.user_logged)
document.getElementById("u_l").style.backgroundColor = "#00FF00";
于 2009-07-31T14:53:58.517 に答える
1

私の意見では、ajaxを介して行うのが最善の方法です。

これでできます。

JSファイル...

        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'check.php',
            success: function(d) { 
                if(d.r == "fail") {
                    window.location.href = d.url;
                } else {
                    console.log(d.msg);
                }
            }
        });

check.php

    if(!isset($_SESSION['loggedin'])){

        $response = array(
            'r' => 'fail',
            'url' => '/home.php'
        );
    } else {

        $response = array(
            'r' => 'success',
            'msg' => 'Logged in'
        );
    }

    echo json_encode($response);
    exit;
于 2016-04-11T22:01:15.867 に答える
1

意味がありません。ユーザーがログインしている場合、それはサーバー側でわかります。したがって、クライアント側でログインしているかどうかを確認する必要はありません。

- 編集 :

明確にした後、ユーザーがログインしている場合はコントローラーで確認することをお勧めします。ログインしている場合は通常のビューを表示し、そうでない場合は別のビューを表示します。

-- 格言を追加編集:

問題に直面したとき、「分かった、ajax を使用する」と考える人もいます。現在、彼らは少なくとも2つの問題を抱えています

于 2009-07-31T14:46:54.050 に答える
0

document.cookie を解析できます。

于 2009-07-31T14:38:23.317 に答える
0

以下のコードで確認できます。

if(jQuery('body').hasClass('logged-in')) {
 // add your jquery code
 }
于 2016-10-13T05:51:12.810 に答える