如何知道是否有人通过javascript登录?

时间:2011-03-27 14:59:09

标签: javascript jquery

在php中我会做

if (isset($_COOKIE['user']) && $_COOKIE['user'] == $valueFromDb)
 echo 'logged';

但是在javascript中如何查看?

由于

4 个答案:

答案 0 :(得分:6)

如果没有向服务器发出请求,则没有可靠的方法来执行此操作,因为会话可能已在服务器端过期。在一个项目中,我做了以下不完美的方式:

checkAuth() {
    var logged = (function() {
        var isLogged = null;
        $.ajax({
            'async': false,
            'global': false,
            'url': '/user/isLogged/',
            'success': function(resp) {
                isLogged = (resp === "1");
            }
        });
        return isLogged;
    })();
    return logged;
}

我说不完美,因为它会产生暂时锁定浏览器的同步请求。它的优点在于,checkAuth()可以从客户端应用程序的任何部分可靠地调用,因为它会强制浏览器在继续执行JS代码之前等待结果,但这就是它。

替代的,异步(非锁定)方法是做这样的事情:

$.ajax({
    'url': '/user/isLogged/',
    'success': function(resp) {
        if(resp === "1") {
            // do your thing here, no need
            // for async: false  
        }
    }
});

答案 1 :(得分:1)

如果您想知道用户是否登录某个页面以执行某种特殊操作,我通常会使用一个隐藏的输入,该输入具有在js上检查的特殊名称。如果用户已登录,则将其放在母版页或类似内容上,然后在js中检查是否存在以了解用户是否已登录。

类似的东西:

<input type="hidden" class="UserIsLogged" />
<script type="text/javascript">
        if ($(".UserIsLogged").length > 0) {
            //User is logged
        }
</script>

答案 2 :(得分:0)

您正在将服务器端处理(php)与客户端处理(javascript)混合在一起。在客户端,除非服务器以某种特定于框架的方式提供此信息,否则此信息不存在。

答案 3 :(得分:0)

是。 看看这个问题:Create, read, and erase cookies with jQuery

一个插件,让您更轻松:http://plugins.jquery.com/project/cookie