我在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);
}
...