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

问题描述 投票:2回答:1

我想将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))
  • 饼干得到了设定
php session cookies laravel-4
1个回答
1
投票

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

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

对此

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

修复一切。

© www.soinside.com 2019 - 2024. All rights reserved.