每次加载时重新生成 Laravel 会话

2022-08-30 21:16:18

我遇到了很多问题,我似乎真的找不到解决方案。

昨天,我在Laravel的一个流浪箱上完成了一些工作。当我关闭计算机时,登录功能工作正常。

今天打开所有内容时,我发现会话不再有效。

我已经尝试了我能想到的一切,但我现在无法登录,Flash数据不起作用。

每个页面加载都会创建一个新会话 - 例如,使用本机驱动程序,如果我登录,它将创建两个会话 - 一个用于登录页面,一个用于发布的登录页面。

如果我使用数据库驱动程序,我会得到相同的结果。每次单击登录时,我都会再获得两行会话数据

我无法判断cookie驱动程序发生了什么,但我已经尝试过了,但它不起作用。

我已经在Chrome和IE中尝试过,但都不会登录。我尝试多次删除存储文件夹的内容,并在浏览器端清空cookie。我确实认为这可能与vm和本地计算机上的时间不同有关,但它们是同步的。

任何想法可能导致这种情况?以前有人遇到过这个问题吗?

编辑:我现在也重新创建了虚拟机,问题仍然存在

第二次编辑:我现在从头开始使用数字海洋VPS,结果相同。

我已经剥离了路由文件中的所有内容,现在只有以下内容

<?php

Route::get('/sess/set/{value}', function($value) {
    Session::set('testv', $value);
Return 'Set ' . $value . ' - ' . Session::get('testv');
});

Route::get('/sess/get', function() {
    Return 'Get ' . Session::get('testv');
});

我访问了第一页,它显示了我在会话中投入的任何值。点击第二页,您只能获得“获取”部分,没有任何会话值。

session_attributes始终具有_token字段,因此我尝试更改会话和域的名称,但仍然无法使会话正常工作。

edit3:对于任何遇到这个问题的人,我从未发现过这个问题。我开始了一个全新的项目,复制了我的控制器和视图,重新创建了我的路由文件,现在一切都在工作 - 尽管我有一半期望明天更新这篇文章,说它又坏了!


答案 1

我的问题是我的函数中有回声语句。它使会话无法正确创建/存储。

我在“返回重定向”之前有一个回声,所以重定向没有得到会话...

public function login()
{
    // auth
    if (Auth::attempt(Input::only('email', 'password'), true))
    {
        return Redirect::route('companies.index');
    }
    // failed -> back to login
    return Redirect::back()->withErrors(['email' => 'Login failed.'])->withInput();
}

详细信息:http://brainwashinc.com/2014/02/17/laravel-sessions-not-working-in-4-1/


答案 2

我有这个确切的问题,并且环境也几乎相同。正如你所经历的那样,最终对我有用的是开始了一个全新的Laravel 4.1项目,然后复制了所有内容。但是,我也发现通过更改一个配置变量,我能够解决问题:

在 /app/config/session 中.php配置项更改为大于 0 的值。这为我解决了这个问题。lifetime


推荐