Laravel 4会话不会在页面加载过程中持续存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 4会话不会在页面加载过程中持续存在相关的知识,希望对你有一定的参考价值。

我想将oauth2 server整合到我的laravel 4.1项目中。密码流进行得很顺利,但在编写授权代码流时,我遇到了会话的一些奇怪问题。

生成请求导致此功能在已登录用户中进行过滤

Route::get('security/authorize', array('before' => 'check-authorization-params|auth', function()
{
    [...]
}));

客人被重定向到表单登录

Route::get('security/login', array('before' => 'guest' ,function()
{
    return View::make('users.login');
}));

这将引导用户登录并重定向到他打算执行的请求:

public function login()
{
    $creds = array(
        'email' => Input::get('email'),
        'password'=>Input::get('password')
    );

    if(Auth::attempt($creds, true))
    {
        return Redirect::intended('/');
    }

    return Redirect::to('security/login');
}

问题是,尽管有一个正的Auth :: attempt(),我仍然被auth过滤器重定向。我做了一些简短的测试,通过设置和读取从未到达下一个请求的会话数据来检查错误是什么,所以我想出了我必须要处理我的会话。

这是我的会话配置文件

<?php
return array(
'driver' => 'database',
    'lifetime' => 120,
    'expire_on_close' => false,
    'files' => storage_path().'/sessions',
    'connection' => 'mysql',
    'table' => 'sessions',
    'lottery' => array(2, 100),
'cookie' => 'laravel_session',
'path' => '/',
'domain' => null,
);

这里有一些我仔细检查过的东西:

  • 数据库连接正确,会话显示在我的表中
  • 会话表字段具有正确的数据类型(id - varchar(255),payload - text,last_activity - int(11))
  • 饼干得到了设定
答案

事实证明,我没有正确地在我的用户模型中设置auth标识符。改变它

public function getAuthIdentifier()
{
    return $this->email;
}

对此

public function getAuthIdentifier()
{
    return $this->id;
}

修复一切。

以上是关于Laravel 4会话不会在页面加载过程中持续存在的主要内容,如果未能解决你的问题,请参考以下文章

用户登录后 Laravel 5 会话不会持续存在

从验证重新加载页面后,带有 Select2 的 Laravel 输入值不会持续存在

Laravel 4:股票身份验证登录不会跨页面持续存在

Laravel 会话数据不会跨页面加载

对 Site.Master 页面的更改不会在会话中持续存在

会话不在 Lumen PHP 框架中持续存在