如何从Laravel Application中删除laravel_session cookie?

时间:2017-09-14 18:41:41

标签: php laravel laravel-5 laravel-5.1

我试图摆脱laravel_session。

我试图为它创建一个中间件

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

更改要使用的驱动程序:array filedatabase

这些都不起作用。每次,我刷新 - 我总是看到这个

enter image description here

问题

如何继续进行调试?

我现在可以接受任何建议。

任何提示/建议/帮助都将非常感谢!

甚至可以吗?

4 个答案:

答案 0 :(得分:5)

如果您根本不想开始会话,请在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,
];

请注意,仅仅删除StartSession中间件是不够的,您还必须禁用ShareErrorsFromSessionVerifyCsrfToken,因为它们依赖于会话在场。如果您想要更多逻辑,例如将其排除在某些路由中,您可以覆盖StartSession middelware。我不知道任何其他副作用,因为我还没有测试过它。

如果您不需要会话或所有与网站相关的功能,例如,因为您只构建了一个API,那么您可能需要查看精简版的Laravel Lumen这个目的。

顺便说一下:会话驱动程序只定义会话服务器端的存储位置/方式。从客户端来看,它仍然只是一个加密的cookie。

答案 1 :(得分:2)

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

实施例。例如,如果您只想申请这两条路线:

url1url2

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);
    }
}

通过在 /app/Http/Kernel.php

中添加一行来注册

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

现在,那两条路线不再存在laravel_session。

我希望这可以帮助别人。

答案 2 :(得分:0)

对于任何搜索,在Laravel 5.5+中,您可以更改env变量SESSION_COOKIE=。如果你有一个较旧的应用程序,你可能需要直接在config/session.php中设置它。

答案 3 :(得分:0)

使用

ASSOC .js=sublime

查找网址路径。对于欧盟Cookie跟踪,我使用了:

if($request->path('url1') || $request->path('url2')) {

使用my-cookie作为您在用户接受时设置的cookie的名称。