Auth :: check()不使用子域

时间:2015-01-03 06:52:30

标签: angularjs laravel-4

我在app.example.dev处有我的AngularJS前端,在api.example.dev处有我的Laravel API后端。 app.example.dev拨打api.example.dev/login,使用Auth::attempt($userdata, true)记录用户。这很好用,如果凭据匹配则返回true。但是,登录数据不会持续存在。

当我拨打Auth::check()时,它总是返回false。

我尝试过:

  • true作为第二个参数传递给Auth::attempt()
  • 'domain' => '.example.dev'添加到app/config/session.php
  • 确保id是我的Users型号
  • 的主键

我在使用Windows 8作为主机操作系统的Ubuntu 14.04虚拟机上运行此设置。我编辑了/etc/hosts文件,因此两个域/子域都指向127.0.0.1(如果这很重要)。

一些相关的代码......

#app/routes.php
...
Route::get('checkLogin', 'AuthController@checkLogin');
Route::post('login', 'AuthController@login')->before('guest');
...

#app/controllers/AuthController.php
...
public function checkLogin() {
    if(Auth::check()) {
        return Response::json(array(
            'loggedIn' => true,
            'roleId' => Auth::user()->role_id,
            'username' => Auth::user()->username));
            // 'id' => Auth::id()));
    } else {
        return Response::json(array(
            'loggedIn' => false));
    }
}
...
public function login() {
    $userdata = array(
        'username' => Input::get('username'),
        'password' => Input::get('password')
    );

    if(Auth::attempt($userdata, true)) {
        return Response::json(array(
            'loggedIn' => true,
            'roleId' => Auth::user()->role_id,
            'username' => Auth::user()->username));
    } else {
        return Response::json(array('loggedIn' => false));
    }
}

在AngularJS中我只有一个服务设置来调用这些路由,例如:

...
var login = function(credentials) {
    return $http.post(apiUrl+'login', credentials);
}
...

0 个答案:

没有答案