如何获取存储在数据库中的会话 ID?
Posted
技术标签:
【中文标题】如何获取存储在数据库中的会话 ID?【英文标题】:How to get the session ID stored in database? 【发布时间】:2015-02-26 14:43:25 【问题描述】:我正在尝试通过制作另一个模型Sessions
在会话表中添加额外信息。我正在使用以下问题答案中详述的方法;
Laravel session table add additional column
表格
字段:
id - varchar(50) - laravel 在这里存储一个 40 个字符的字符串 有效负载 - 中文本 - 通常为 265 个字符的字符串 last_activity - int(11) user_id - bigint(20) type - varchar(15) - default('biz') created_at - 时间戳 - 默认(CURRENT_TIMESTAMP)型号
class Sessions extends BaseModel
protected $table = 'sessions';
protected $fillable = array(
'id',
'payload',
'last_activity',
'user_id',
'type',
'created_at');
public static function getCurrent()
return Sessions::find(Session::getId());
控制器
public function postLogin()
if (\Auth::biz()->attempt(\Input::only(array('email', 'password')),
\Input::get('persist', 'no') == 'yes'))
$session = Sessions::getCurrent(); // returns NULL
// fields getting values
$session->save();
return \Redirect::route('marketer.home');
else
return \Redirect::back()->withInput()->with('loginFail', true);
我正在使用 laravel v4.2.16 和基于数据库的会话管理。 Session::getId()
函数不会返回存储在数据库中的 id,因此我无法通过我的 Sessions::getCurrent()
方法获取当前会话的模态。
该方法之前有效,因此我们在其上构建了许多优化查询。
【问题讨论】:
表存在于数据库中吧? Session::getId() 返回什么?空? @VitoNordloh 是的,该表存在。我试过用 dd(Session::getId()) 运行它,它返回一个类似编码的字符串,它与 id 列下的任何内容都不匹配。 @UmairAhmed,在同一个会话中?还是重新登录? @LeaTano 不,同一个会话。 @UmairAhmed session_id 是完全不同还是更短?如果它更短,请确保会话列长度足够大。如果 session_id 完全不同,请与我们分享完成的代码......我可以帮助你。 【参考方案1】:你需要调用静态Session::unguard();
获取id然后Session::reguard();
【讨论】:
【参考方案2】:试试这个:
$user = \Auth::user(); in the view file
然后将 $user 变量打印为:
echo "<pre>";
print_r($user);
echo "</pre>";
exit;
看看,如果这有帮助。
【讨论】:
不,我不需要这里的用户。我想从数据库中获取当前会话的行。 奇怪,刚登录用户,我就把dd(Session::has(\Auth::biz()->id()));它返回 false 而 \Auth::biz()->check() 返回 true... 在您的 Auth Redirect 部分更改为: return \Redirect::route('marketer.home')->with(array('key' => 'value'));然后回显 Session::has('key'); 试试这个:print_r(Session::has(\Auth::biz()->toArray())); 第一个返回false,第二个返回'Call to a member function toArray() on a non-object'以上是关于如何获取存储在数据库中的会话 ID?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用会话ID从php mysql中的两个或多个表中获取值
Fastlane:如何自动获取 Apple ID 的登录会话?
如何通过ID获取其他用户信息(用户名,名字)? [Keycloak]