Laravel Redis会话驱动程序无法工作。

6
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我在使用laravel 4的“redis”会话驱动器时遇到了困难。

问题在于实际上没有存储任何内容。

我已经检查过以下事项:

  • I've set the driver to redis in Session-config file and cache-config file
  • In database-config file a database config for redis is specified:
  • I tried storing something manually with the redis-class, that did work, storing with the session class did not work

    // this is in my session config
    'driver' => 'redis',
    
    //this is my db-config
    'redis' => array(
    
        'cluster' => true,
    
        'default' => array(
            'host'     => '127.0.0.1',
            'port'     => 6379,
            'database' => 0,
        ),
    
    ),
    
    
    //this works
    $redis = Redis::connection();
    $redis->set('name', 'Taylor');
    
    //this doesn't work
    Session::put('name', 'Taylor');
    
当我将会话更改为native时,它可以工作。
任何帮助都将不胜感激。
更新: 很有趣: 当我像@philo建议的那样使用redis-cli monitor时,尝试登录我的L4应用程序时会得到一些输出。
`1387191809.513730 [0 127.0.0.1:59268] "SELECT" "0"
1387191809.513835 [0 127.0.0.1:59268] "GET" "laravel:siau639prmckja34le11vbsfl7"
1387191809.863851 [0 127.0.0.1:59268] "SET" "laravel:siau639prmckja34le11vbsfl7" "s:226:\"_sf2_attributes|a:2:{s:6:\"_token\";s:40:\"9LPf354C2ZNtw0Oc1zyafSvMdFFlspPiJsq8w90v\";s:5:\"flash\";a:2:{s:3:\"old\";a:0:{}s:3:\"new\";a:0:{}}}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:\"u\";i:1387191809;s:1:\"c\";i:1387191809;s:1:\"l\";s:1:\"0\";}\";"
1387191809.866655 [0 127.0.0.1:59268] "EXPIRE" "laravel:siau639prmckja34le11vbsfl7" "0"
1387191828.464840 [0 127.0.0.1:59279] "SELECT" "0"
1387191828.464970 [0 127.0.0.1:59279] "GET" "laravel:siau639prmckja34le11vbsfl7"
1387191828.581774 [0 127.0.0.1:59279] "SET" "laravel:siau639prmckja34le11vbsfl7" "s:599:\"_sf2_attributes|a:4:{s:6:\"_token\";s:40:\"KSkc5OAsp9Psz3MC7dYo6FfkTvcdK6I6HcisSyJ3\";s:10:\"_old_input\";a:3:{s:6:\"_token\";s:40:\"9LPf354C2ZNtw0Oc1zyafSvMdFFlspPiJsq8w90v\";s:8:\"username\";s:10:\"bertcasier\";s:8:\"password\";s:4:\"test\";}s:5:\"flash\";a:2:{s:3:\"new\";a:0:{}s:3:\"old\";a:2:{i:0;s:10:\"_old_input\";i:1;s:6:\"errors\";}}s:6:\"errors\";O:29:\"Illuminate\\Support\\MessageBag\":2:{s:11:\"\x00*\x00messages\";a:1:{s:7:\"general\";a:1:{i:0;s:48:\"Ongeldige gebruikersnaam/wachtwoordcombinatie...\";}}s:9:\"\x00*\x00format\";s:8:\":message\";}}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:\"u\";i:1387191828;s:1:\"c\";i:1387191828;s:1:\"l\";s:1:\"0\";}\";"
1387191828.582214 [0 127.0.0.1:59279] "EXPIRE" "laravel:siau639prmckja34le11vbsfl7" "0"
1387191828.613536 [0 127.0.0.1:59284] "SELECT" "0"
1387191828.613649 [0 127.0.0.1:59284] "GET" "laravel:siau639prmckja34le11vbsfl7"
1387191828.653734 [0 127.0.0.1:59284] "SET" "laravel:siau639prmckja34le11vbsfl7" "s:226:\"_sf2_attributes|a:2:{s:6:\"_token\";s:40:\"SMxXljPLDaViVVSpCohfOKlpByhjp8E2ywS6zVkh\";s:5:\"flash\";a:2:{s:3:\"old\";a:0:{}s:3:\"new\";a:0:{}}}_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:\"u\";i:1387191828;s:1:\"c\";i:1387191828;s:1:\"l\";s:1:\"0\";}\";"
1387191828.654102 [0 127.0.0.1:59284] "EXPIRE" "laravel:siau639prmckja34le11vbsfl7" "0"
1387191878.208814 [0 127.0.0.1:59358] "config" "get" "databases"
1387191878.215094 [0 127.0.0.1:59358] "INFO" "keyspace"
1387191880.176125 [0 127.0.0.1:59358] "select" "0"
1387191880.176314 [0 127.0.0.1:59358] "keys" "*"`

似乎我的会话立即过期? 我编写了一个自定义的Auth用户提供程序,用于在rest API中登录并将结果存储在会话中。但是当我使用redis会话驱动程序时,我立即被重定向回登录页面。当我使用RDM(redis客户端GUI)时,找不到任何会话变量。

你正在使用Laravel 4.0或4.1吗?如果你正在使用4.1,尝试将cluster设置为“false”。 - Tamás Pap
我正在使用4.0.8版本。我尝试开启和关闭集群,但没有帮助。 - Ernie
2
当您运行redis-cli monitor时,您是否在控制台中看到任何活动? - Philo
@philo 我尝试使用你的命令,可以看到输出,所以 REDIS-连接似乎是有效的,但我猜测所有内容都立即过期了?我已经更新了问题并附上了输出。感谢你的建议! - Ernie
3个回答

6
我通过@philo的提示找到了解决方案。
我的配置文件中,会话生命周期被设置为“零”,因为我希望我的会话在关闭浏览器时过期。这对于本地会话有效,但对于Redis会话会导致会话立即过期。当我更改生命周期时,我的会话按预期工作。
现在我仍在寻找如何在关闭浏览器时过期。

嘿,你是怎么把Redis设置成会话的?我需要设置哪些配置呢? - Spurdow

1
现在我还在寻找如何在浏览器关闭时使其过期。
请注意,Cookie 的生存期和会话数据的生存期是无关的。您希望将 Cookie 的生存期设置为 0(在浏览器关闭时删除),而会话数据的生存期要更长一些(与您允许的请求之间的时间一样长)。

0

你必须使用middlewareGroups将你的路由封装到控制器中 - Laravel 5.2

Route::group(['middlewareGroups' => ['web']], function () { ... });


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接