如何从Laravel应用程序中删除laravel_session cookie?

kyo*_*kyo 4 php laravel laravel-5

我正在尝试摆脱laravel_session。

我尝试为其创建中间件

https://laracasts.com/discuss/channels/laravel/laravel-51-disable-session-and-cookies-for-some-routes

更改驱动程序使用:array filedatabase

这些都不起作用。每次刷新时,我总是会看到以下内容:

在此处输入图片说明

我该如何实现?有可能做吗?

Qua*_*unk 7

如果您根本不想启动会话,请在Laravel 5.1中转到app / Http / Kernel.php并注释掉与会话相关的部分:

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,
];
Run Code Online (Sandbox Code Playgroud)

请注意,这是不够的,只有RIP出来的StartSession中间件,你还必须禁用ShareErrorsFromSession,并VerifyCsrfToken因为其依赖于会话存在。如果您想要更多的逻辑,例如对某些路由排除它,则可以覆盖StartSession middelware。我还没有其他副作用,因为我还没有测试过。

如果您不需要会话或与网站相关的所有功能,例如,因为您仅在构建API,则可能需要查看为此目的简化的Laravel Lumen

顺便说一句:会话驱动程序仅定义在何处/如何存储会话服务器端。从客户端来看,它仍然只是一个加密的cookie。


kyo*_*kyo 5

如果我有不希望 Laravel 使用 laravel_session 的特定路线。您可以将其应用于您想要的任何路线。

前任。例如,如果您只想申请这 2 条路线:

url1 或者 url2

Route::get('/url1', 'SampleController@fnName');

Route::get('/url2', 'SampleController@fnName2');


创建/app/Http/Middleware/StartSessionMiddleware.php

<?php
namespace App\Http\Middleware;

use Closure;
use Config;

use Illuminate\Session\Middleware\StartSession as BaseStartSession;

class StartSessionMiddleware extends BaseStartSession
{

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {

        if($request->is('url1') || $request->is('url2')) {
            Config::set('session.driver', 'array');
        }

        return parent::handle($request, $next);
    }
}
Run Code Online (Sandbox Code Playgroud)

通过在/app/Http/Kernel.php 中添加一行来注册

\App\Http\Middleware\StartSessionMiddleware::class,

现在,那 2 条路线不应该再有 laravel_session 了。

我希望这可以帮助某人。