class LoginController extends Controller
{
public function processLogin(LoginRequest $request)
{
$email = $request->get('email', '');
$password = $request->get('password', '');
$token = $this->_loginService->processLoginAttempt($email, $password);
Session::put('access_token', $token);
Session::save();
return redirect()->route('portals');
}
public function showPortals(Request $request)
{
dd(Session::get('access_token'));
}
....
}
请求的middleware
组设置为web
。
执行processLogin()
控制器方法并重定向到showPortals()
后,access_token
将被转储到屏幕上。但是,刷新页面时,会清除该会话变量。
奇怪的是,代替在redirect()
内执行processLogin()
而不是dd()
,然后访问showPortals()
端点,会话令牌仍然存在,因为它应该,即使多次刷新页面。
我在某处读到Session::save()
需要一段时间来保存(可能是异步的?),这可能导致这种行为?
我尝试了所有其他方法,但会话变量在页面重新加载时不会持续存在。
答案 0 :(得分:0)
这是一个代码示例。保存会话时,您必须提供密钥,数据和持续时间,或者如果您愿意,可以永久保存。
class LoginController extends Controller
{
public function processLogin(LoginRequest $request)
{
$email = $request->email;
$password = $request->password;
$token = $this->_loginService->processLoginAttempt($email, $password);
//this will save your token for 24 hours
Session::put('access_token', $token, 60*24);
return redirect()->route('portals');
}
public function showPortals(Request $request)
{
dd(Session::get('access_token'));
}
....
}