我试图摆脱laravel_session。
我试图为它创建一个中间件
更改要使用的驱动程序:array
file
,database
这些都不起作用。每次,我刷新 - 我总是看到这个
如何继续进行调试?
我现在可以接受任何建议。
任何提示/建议/帮助都将非常感谢!
甚至可以吗?
答案 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
中间件是不够的,您还必须禁用ShareErrorsFromSession
和VerifyCsrfToken
,因为它们依赖于会话在场。如果您想要更多逻辑,例如将其排除在某些路由中,您可以覆盖StartSession middelware。我不知道任何其他副作用,因为我还没有测试过它。
如果您不需要会话或所有与网站相关的功能,例如,因为您只构建了一个API,那么您可能需要查看精简版的Laravel Lumen这个目的。
顺便说一下:会话驱动程序只定义会话服务器端的存储位置/方式。从客户端来看,它仍然只是一个加密的cookie。
答案 1 :(得分:2)
如果我有特定路线,我不希望Laravel使用laravel_session。 您可以将其应用于您想要的任何路线。
实施例。例如,如果您只想申请这两条路线:
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);
}
}
通过在 /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的名称。