Ajax登录和Laravel数据库会话

时间:2014-12-30 13:29:49

标签: php ajax session laravel-4

我一直在使用传统方式在没有ajax的情况下登录用户,因为我已经切换到ajax和单独的API,身份验证似乎本身就可以工作,但会话在某种程度上没有正确设置?

以下是设置:

我有两个Laravel项目,一个用于前端的Web应用程序和一个API后端。 用户通过前端laravel项目登录,该项目将(通过ajax)调用API,将新会话写入数据库(是的,我使用数据库驱动程序进行会话,两个项目使用相同的数据库)。但是,当我登录并查看数据库时,我会看到8个新会话左右,这绝对不是它应该如何。可能是什么原因造成的?仅供参考,我检查并确保ajax请求仅执行一次,而不是多次。 当我尝试通过Auth :: attempt()登录用户时,身份验证成功,但用户似乎从未登录过,我怀疑这是会话。

try {

  // attempt to log in the user with the given input
  if(\Auth::attempt(array('email'     => $input['email'], 
                           'password'  => $input['password'], 
                           'confirmed' => 1))){

        return \Response::json(["user" => \Auth::User()]);

    }
}catch(\Exception $e){
    return $e;
}

以下是会话的数据库表:

enter image description here

编辑

我尝试在Web应用程序本身(而不是通过api项目)中登录用户,调用Auth::attempt()并按预期工作,但我想通过Api(api和web)登录用户应用程序共享会话数据库),所以我希望信息在某种程度上有用。在通过Web应用程序登录时,只创建了一个会话,但在后续请求中,我获得了更多会话。这是正常的吗?

编辑2

API实际上是从不同项目根目录的子域(api.example.com)提供的。这可能是问题(会话cookie?)?

1 个答案:

答案 0 :(得分:0)

您是否在前端和后端使用两种不同的laravel设置。

如果是,则检查您的会话名称,他们可能会为前端和后端创建相同的名称。更改前端或后端的会话名称。