我使用Laravel 5.2,安装了新的Sentinel 2.0,注册工作正常,但尝试登录会返回用户,但不会设置任何cookie或会话,或者无论如何......
此时我发现没有任何cookie /会话被保存。我无法弄清楚为什么不推送cookie。
AuthController.php
\Sentinel::check();
重定向前 object(Cartalyst\Sentinel\Users\EloquentUser)#188 (27) {
["table":protected]=>
string(5) "users"
["fillable":protected]=>
array(5) {
[0]=>
string(5) "email"
[1]=>
string(8) "password"
[2]=>
string(9) "last_name"
[3]=>
string(10) "first_name"
[4]=>
string(11) "permissions"
}
["persistableKey":protected]=>
string(7) "user_id"
["persistableRelationship":protected]=>
string(12) "persistences"
["loginNames":protected]=>
array(1) {
[0]=>
string(5) "email"
}
["connection":protected]=>
NULL
["primaryKey":protected]=>
string(2) "id"
["perPage":protected]=>
int(15)
["incrementing"]=>
bool(true)
["timestamps"]=>
bool(true)
["attributes":protected]=>
array(9) {
["id"]=>
int(1)
["email"]=>
string(25) "test@dev.local"
["password"]=>
string(60) "$2y$10$wXHwd6ubbHWWXU9CBI/7AOdDsHY.f7t8b1Kjem0m1ep7Ud.9M/4i6"
["permissions"]=>
NULL
["last_login"]=>
object(Carbon\Carbon)#192 (3) {
["date"]=>
string(26) "2016-01-06 15:15:42.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
var_dump()
.env
任何想法可能出错?
在database
中,会话驱动程序设置为$sql =<<<SQL
SELECT * FROM User user
JOIN BlogPost blog_post ON user.id = blog_post.UserID
JOIN Event event ON blog_post.id = event.BlogPostID
JOIN Venue venue ON event.VenueID = venue.id
WHERE user.id = ?
SQL;
,并且会话表在登录后保持为空。也没有设置cookie。
答案 0 :(得分:1)
有同样的问题。我不得不用Web中间件
创建一个路由组Route::group(['middleware' => 'web'], function() {
Route::get('modules', ['uses' => 'ModuleController@index', 'as' => 'modules']);
Route::get('modules/{name}', ['uses' => 'ModuleController@show', 'as' => 'modules.show']);
Route::post('modules/{module}/publish', ['as' => 'module.publish', 'uses' => 'ModuleController@publish']);
Route::post('modules/{module}/enable', ['as' => 'module.enable', 'uses' => 'ModuleController@enable']);
Route::post('modules/{module}/disable', ['as' => 'module.disable', 'uses' => 'ModuleController@disable']);
});
然后按预期工作。
答案 1 :(得分:0)
我在stackoverflow上的另一个答案中找到了答案。需要启用&#39; web&#39;中间件..叹息
希望他们在某处记录......
答案 2 :(得分:0)
原因是Sentinel使用Cookies /会话。如果要使用除Web以外的另一个中间件组,请确保将这些中间件添加到该组中。