Php Laravel:为每个请求设置cookie

Php Laravel:为每个请求设置cookie,php,laravel,cookies,csrf,setcookie,Php,Laravel,Cookies,Csrf,Setcookie,我用了一段时间拉威尔,但我有一个问题。Laravel为每个请求设置cookie。无论用户是否登录 我不认为这是拉威尔的正常行为。用户登录后,我们不需要在每次请求时为他们创建新会话。是吗?那么为什么laravel会为用户发送的每个请求生成新的会话和csrf令牌呢?它还为来宾用户生成这些会话和令牌,这是完全不必要和无用的 我怎样才能防止这种情况 更新: 我使用Laravel5.2和文件作为会话驱动程序 以下是我的路由和中间件示例: 路线: <?php Route::get('/login'

我用了一段时间拉威尔,但我有一个问题。Laravel为每个请求设置cookie。无论用户是否登录

我不认为这是拉威尔的正常行为。用户登录后,我们不需要在每次请求时为他们创建新会话。是吗?那么为什么laravel会为用户发送的每个请求生成新的会话和csrf令牌呢?它还为来宾用户生成这些会话和令牌,这是完全不必要和无用的

我怎样才能防止这种情况

更新: 我使用Laravel5.2和文件作为会话驱动程序

以下是我的路由和中间件示例:

路线:

<?php

Route::get('/login', 'UserController@login');
Route::post('/login', 'UserController@postLogin');
Route::get('/link/{link}', 'HomeController@link');


$router->group(['middleware' => ['auth']], function() {
    Route::get('/', 'HomeController@index');
    Route::post('/', 'HomeController@postindex');

    Route::get('/home', 'HomeController@index');
    Route::post('/home', 'HomeController@postindex');

    Route::get('user/{username}', 'UserController@user_info');
    Route::post('user/{username}', 'UserController@post_user_info');

    Route::get('/logout', 'UserController@logout');
});

$router->group(['middleware' => ['auth', 'role:2']], function() {
    Route::get('/tools/register', 'UserController@register');
    Route::post('/tools/register', 'UserController@postregister');

    Route::get('/tools/users', 'AdminController@users');
    Route::post('/tools/users', 'AdminController@post_users');
});


Route::controllers([
    'password' => 'Auth\PasswordController',
]);

我没有检查,但您的路由可能位于默认的“Web”中间件组中,该组默认具有会话/cookies/csrf


我没有检查,但您的路由可能位于默认的“Web”中间件组中,该组默认具有会话/cookies/csrf



您使用的是哪一版本的laravel?@OliverQueen laravel 5.2我必须编写自己的中间件来解决此问题。您可以向我们展示您的路由和中间件设置吗?@ceejayoz是的。更新了问题:您使用的是哪一版本的laravel?@OliverQueen laravel 5.2我必须编写自己的中间件来解决此问题。您可以向我们展示您的路由和中间件设置吗?@ceejayoz是的。更新了问题My site uses sessions/cookie/csrf。但是在每次请求时设置这些cookie和会话,一次又一次地是非常困难的weird@Sky是否为每个请求设置新ID?
Set Cookie
调用应该在每个请求中都存在,但会话ID应该保持不变。@ceejayoz会话和csrf,在每个请求中都会更改,但它们不是不变的。您的laravel会话驱动程序是什么?@Marijanspassenovski是默认的。FileMy站点使用sessions/cookie/csrf。但是在每次请求时设置这些cookie和会话,一次又一次地是非常困难的weird@Sky是否为每个请求设置新ID?
Set Cookie
调用应该在每个请求中都存在,但会话ID应该保持不变。@ceejayoz会话和csrf,在每个请求中都会更改,但它们不是不变的。您的laravel会话驱动程序是什么?@Marijanspassenovski是默认的。文件
<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'role' => \App\Http\Middleware\Role::class,
    ];
}