Sentinel :: authenticate()不起作用

时间:2016-01-06 15:20:10

标签: laravel-5.2 php-7 cartalyst-sentinel

我使用Laravel 5.2,安装了新的Sentinel 2.0,注册工作正常,但尝试登录会返回用户,但不会设置任何cookie或会话,或者无论如何......

UPDATE1

此时我发现没有任何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。

3 个答案:

答案 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;中间件..叹息

希望他们在某处记录......

https://stackoverflow.com/a/34529550/775260

答案 2 :(得分:0)

原因是Sentinel使用Cookies /会话。如果要使用除Web以外的另一个中间件组,请确保将这些中间件添加到该组中。