【发布时间】:2015-10-15 10:01:04
【问题描述】:
好的,所以当有人登录时,我试图在登录时存储会话。我正在存储会话,保存它,但是在下一页,我无法检索该会话。这是一个空输出。存储文件夹设置为 775,所以我不明白为什么它不会写入。顺便说一句,Auth session get 是写的,它只是没有被存储的 Session::put() 键。下面是代码:
LoginController.php
if(Auth::attempt(['username' => $this->user, 'password' => $inp->password, 'Login' => $this->acct]))
{
# [2]: If TRUE, Create sessions, redirect
$authArr = SubUsers::join('sub_services as ss', 'sub_users.userid', '=', 'ss.userid')->where('sub_users.username', $this->user)->first()->toArray();
// Create The Sessions
Session::put('Username', $this->user); # constant | User that's currently logged in
Session::put('Account', $this->acct); # changing | Account Data being passed to view
Session::save();
Session::push('Auth', $authArr);
// Redirect
if(Session::has('lasturl')){
$lasturl = Session::get('lasturl');
return Redirect::to($lasturl);
}
else { return Redirect::to($this->startScreen); }
}
BaseAppController.php
public function __construct()
{
dd(Session::has('Username')); # [ This Returns Null ]
}
更新: 下面是存储在 storage/framework/sessions 文件夹中的会话。它被正确存储:
a:8:{s:6:"_token";s:40:"dEf3bJ4vz9fjiUuVnjD5EKNIKgJ38UzgZ0q4aE7K";s:9:"_previous";a:1:{s:3:"url";s:43:"http://localhost:8888/alpha/public/settings";}s:5:"flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:38:"login_82e5d2c56bdd0811318f0cf078b78bfc";i:78;s:8:"Username";s:4:"demo";s:7:"Account";s:4:"demo";s:4:"Auth";a:1:{i:0;a:20:{s:6:"userid";i:78;s:7:"groupid";N;s:5:"Login";s:4:"demo";s:8:"username";s:4:"demo";s:8:"password";s:60:"$2y$10$9Q1/zGeRrrDwl2rfjmkIWuWv3V/LpgFVYR/68PjANCsIkKmIVRVAu";s:4:"name";s:11:"John Babtis";s:5:"email";s:16:"jo@relatient.net";s:14:"remember_token";s:60:"2dqaWk56uJ1ldTdHhLcGg5U47JGxAD7EKdqwlr5qpPMGat9BKpMTf8tDtUlL";s:13:"userserviceid";i:81;s:9:"SuperUser";i:1;s:13:"MasterAccount";i:1;s:14:"canCreateUsers";i:1;s:12:"canEditUsers";i:1;s:2:"hm";i:1;s:6:"demand";i:1;s:9:"pophealth";i:1;s:12:"appointments";i:1;s:7:"reports";i:1;s:8:"settings";i:1;s:12:"canEditChild";i:1;}}s:9:"_sf2_meta";a:3:{s:1:"u";i:1437755751;s:1:"c";i:1437755740;s:1:"l";s:1:"0";}}
【问题讨论】:
-
在保存会话后立即尝试
dding 会话,以确保您存储的值不是null。 -
那里存放。转储表明了这一点。它还在存储后立即显示一个值。当它重定向页面时,就是当会话拉空时。
-
为方便起见,这是转储中的此部分:s:8:"Username";s:4:"demo";s:7:"Account";s:4:"demo";
-
@亚历山大。不是问题。出于某种原因,PHP / Laravel 对“用户名”区分大小写。一旦我将其重命名为“用户名”,一切正常。在我眼里这很神奇,因为我不认为 PHP 使用这个术语。我能看出它为什么不起作用的唯一原因是 Auth 服务提供者是否可能重写了会话变量?