gpt4 book ai didi

php - 防止 Laravel 中的路由 session (自定义按需 session 处理)

转载 作者:可可西里 更新时间:2023-10-31 22:10:32 26 4
gpt4 key购买 nike

我正在使用 laravel 和默认 session 驱动程序设置为 REDIS 为我的 Android 应用程序构建 API。

我在这里找到了一篇好文章http://dor.ky/laravel-prevent-sessions-for-routes-via-a-filter/哪一种服务于此目的。

然而,每当我点击 url 时,它也会点击 redis 并生成空的 key 。现在我想避免在 redis 中创建空 session key 。理想情况下,它不应该命中 redis 我该怎么做?

我们能否以某种方式自定义 session ,以便仅针对特定路由生成 session (或针对特定路由禁用 session )?

我可以用具体的用例来解释更多,请告诉我。

最佳答案

在 Laravel 5 中使用中间件真的很容易,我需要任何带有 API key 的请求都没有 session ,我只是这样做了:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Session\Middleware\StartSession as BaseStartSession;

class StartSession extends BaseStartSession
{

/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(\Request::has('api_key'))
{
\Config::set('session.driver', 'array');
}
return parent::handle($request, $next);
}
}

您还需要按如下方式扩展 SessionServiceProvider:

<?php namespace App\Providers;

use Illuminate\Session\SessionServiceProvider as BaseSessionServiceProvider;

class SessionServiceProvider extends BaseSessionServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerSessionManager();

$this->registerSessionDriver();

$this->app->singleton('App\Http\Middleware\StartSession');
}
}

并将您的 config/app.php 放在 providers 下:

'App\Providers\SessionServiceProvider',

您还必须在内核文件中更改它:App/Http/Kernel.php,在 $middlewareGroups 部分更改默认条目,\Illuminate\Session\Middleware\StartSession::class, 到你的新类 \App\Http\Middleware\StartSession::class,

关于php - 防止 Laravel 中的路由 session (自定义按需 session 处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com