kyo*_*kyo 4 php laravel laravel-5
我正在尝试摆脱laravel_session。
我尝试为其创建中间件
更改驱动程序使用:array file,database
这些都不起作用。每次刷新时,我总是会看到以下内容:
我该如何实现?有可能做吗?
如果您根本不想启动会话,请在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。
如果我有不希望 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 了。
我希望这可以帮助某人。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2539 次  |  
        
|   最近记录:  |