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会话不会在页面加载过程中持续存在的主要内容,如果未能解决你的问题,请参考以下文章