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

标签 php session laravel laravel-4 laravel-routing

我正在使用 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/

相关文章:

python - 无法使用 python api 发布,登录状态 - KeyError : "name=' loggedin', 域=无,路径=无”

java - 浏览器重启java后保持 session

c# - 如何在 MVC 4 应用程序中进行单用户登录

laravel - javascript 和 css 文件在 laravel 项目中的位置

php - where 子句中的未知列,但我已经验证

javascript - 从嵌套数组中下拉选择

PHPExcel:将 Excel 插入 SQL 数据库时单元格坐标 A 无效

php - 用于树莓派的 Ratchet Websocket

javascript - Vuejs 变量赋值错误

Laravel 5.1 Snappy pdf 图像未在 pdf 文件中呈现