Php 页面刷新后缺少Laravel会话

Php 页面刷新后缺少Laravel会话,php,session,laravel,Php,Session,Laravel,我对在拉威尔的会议有点问题 我制作了如下的身份验证功能: public function postSignin(){ $attempt = Auth::attempt(array('username' => Input::get('username'), 'password' => Input::get('password'))); if ($attempt) { return Redirect::to('index')->

我对在拉威尔的会议有点问题

我制作了如下的身份验证功能:

public function postSignin(){
        $attempt = Auth::attempt(array('username' => Input::get('username'), 'password' => Input::get('password')));
        if ($attempt) {
            return Redirect::to('index')->with('message', 'Anda telah login!' . $attempt)
                                        ->with('usersess', Input::get('username'));
        } else if(!$attempt){
                return Redirect::to('auth')
                            ->with('message', 'Kombinasi email/password salah ' . $attempt)
                            ->withInput();
        }
    }
让我们看看,我已经将'usersess'变量发送到会话中,我在我的头部刀片中使用该会话,如下所示:
{{session::get('usersess')}
并将其放在头部

但问题是当我刷新页面时,会话丢失了!是否有任何线索,如何在不丢失会话的情况下将其取回

我已经了解了php,使用
是基本功能,但是它在laravel中是如何工作的呢

谢谢大家!

更新我的session.php配置


->with
仅为该页面加载向会话闪烁数据。如果要在会话中保留项目,请使用
session::put('key','value')
。以你为例:

if($attempt) {
    Session::put('usersess', Input::get('username'));
    return Redirect::to('index')->with('message', 'Anda telah login!' . $attempt);
}
编辑

您可以使用
Session::get('key')
检索值,也可以使用
Session::pull('key')
返回值并忘记值。您还可以使用
Session::forget('key')
删除项目<代码>会话::flush()清除会话中的所有内容


可以找到会话文档

当我使用

use Illuminate\Support\Facades\Session;
你可以用它来代替它

use Symfony\Component\HttpFoundation\Session\Session;
以及:


我想对此做出贡献,因为我遇到了同样的问题,但我的解决方案与投票结果不同

在将项目放入会话后,它们似乎在下一页加载时消失了

我这样做的方式是通过一个AJAX调用。每当我调用AJAX时,我总是在最后使用
退出
,以防止任何不必要的页面处理。我发现,这个
退出
阻止了Laravel进一步进行并将数据写入永久会话


星狐之声:祝你好运

这显然不是你的问题,但对于发现这个问题的其他人来说,接受的答案并不能解决你的问题,这可能:

如果将laravel会话存储在数据库中,则该会话值的大小有一个限制。Laravel会话迁移有一个名为“payload”的文本类型字段。如果超出该字段的限制,则整个会话将被终止。当我在会话中动态添加json模型数据时,这种情况就发生了

Schema::create('sessions', function (Blueprint $table) {
    $table->string('id')->unique();
    $table->text('payload');
    $table->integer('last_activity');
});

检查是否未删除.js中的cookies。 这对我来说是个问题:

var now = new Date();
now.setTime(now.getTime()+(-1*24*60*60*1000));
var expires = "=;"+" path=/; expires="+now.toUTCString();
document.cookie = "lastpage"+expires;

你能发布你的app/config/session.php文件吗?@TheShiftExchange请查看更新的部分。无论如何,仅供参考,我把刀片放进了两个不同的页面。其中索引是扩展标题。我将会话放置在标题刀片中,但我的路由将索引刀片。有问题吗?您不应该将session_start()放在代码中的任何位置-Larvel会为您处理所有会话包装。@Shift Exchange,rmclood已经给出了解决方案。谢谢你的帮助!:)然后,当我想删除会话时,只需使用Auth::logout();或者只使用Session::flush()?然后我将使用刷新注销方法:)谢谢你的帮助!谢谢,在我的例子中,这是由于一个dd()阻止了请求完成,从而阻止了要存储的会话:谢谢,我使用“dd()”进行测试,没有想到这个问题。我不确定我在调试
dd()
var\u dump()会话问题上浪费了多少时间+退出
,直到找到此注释并意识到我正在中断会话本身。非常感谢你!
Schema::create('sessions', function (Blueprint $table) {
    $table->string('id')->unique();
    $table->text('payload');
    $table->integer('last_activity');
});
var now = new Date();
now.setTime(now.getTime()+(-1*24*60*60*1000));
var expires = "=;"+" path=/; expires="+now.toUTCString();
document.cookie = "lastpage"+expires;