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 了。
我希望这可以帮助某人。