如何查看用户是匿名用户还是从javascript登录?

Mat*_*att 9 javascript authentication session-variables

我想确定用户是否已登录,或者他们是否只是来自javascript的匿名...

我发现了这个问题,但它是php代码,我不确定是否有一个名为logged_in的会话变量存储在登录中,或者这只是那个人自己实现的东西.

任何人都知道如何检查用户是否从javascript登录,可能使用ajax?

编辑:我正在运行Asp.Net MVC,抱歉应该已经指定了

这样我就可以实现客户端ajax登录.当页面加载时,我需要知道用户是否登录,因此我可以<asp:LoggedInView>使用jquery 实现类似于控件的操作.

谢谢,
马特

Mak*_*leh 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>';
}
Run Code Online (Sandbox Code Playgroud)

然后JS将只检查本机logged_invar以查看用户是否已登录.

<script type="text/javascript">
    if (logged_in) {
        alert("My user is logged in!");
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 绝对不安全.最好的方法:在需要动作时检查服务器端的http ajax请求(可能在你的javascript函数中) (6认同)
  • 如果我们要讨论不良做法(请参阅我的答案的所有评论),那么这一次遭受同样的挫折.它仍然是一个易于修改的客户端变量.然而,就回答原始海报的问题而言,这个问题同样出色. (2认同)

idr*_*ood 6

[免责声明]由于我收到了很多关于这种"不良做法"的评论,我只想这样说:这样做是不好的做法,但我们不知道原来是什么海报打算做.据我们所知,他做了其他一切100%正确和安全的事情,只是问是否有办法从javascript获得它.我在下面所做的就是如何完成他所要求的事情.[/免责声明]

您可以使用您的php或您正在使用的任何后端语言,设置一个cookie,然后您可以使用javascript阅读.

document.cookie
Run Code Online (Sandbox Code Playgroud)

就那么简单.您必须在cookie字符串中搜索已登录cookie的名称.

您也可以使用它来设置cookie并通过javascript进行登录(尽管可能不是最好的主意.)

有关javascript cookie访问的快速概述,请参见此处.

[编辑]

要解决可以访问会话信息的客户端脚本问题,以及原始问题中建议的可能使用的ajax:

是的,ajax调用将是一个非常简单的方法来检查这一点.我更像是一个jQuery人,所以我的ajax经验就在那里,但基本上,你会对你的后端函数进行ajax调用,而后端函数只检查'loggedin'会话变量,返回true或false.

此外,由于您现在提到您正在使用jQuery,请参阅此页面以便轻松访问jQuery cookie.[/编辑]

  • 你是对的,客户端脚本不应该知道会话的东西,但原始海报的问题询问如何从javascript访问信息,提供的答案负责处理. (3认同)