【问题标题】:keeping laravel session variable till user logs out保持 laravel 会话变量直到用户注销
【发布时间】:2016-07-13 23:46:20
【问题描述】:

我有一个简单的用户身份验证,在 UserController 我有一个名为 postLogin() 的函数。

public function postLogin()
{
 if(Auth::user()->attempt($credentials))
  {
  return Redirect::intended('desk')->with('stream',"SomeData");;
  }
}

使用上面的代码,我可以使用我正在检索它的“SomeData”变量成功登录

 <?php
 $class = Session::get('stream');
 var_dump($class);
 ?>

当它第一次转到“/desk”网址时,它完美地转储了“SomeData”的值,但是一旦我刷新页面,它就会重置会话并且值变为空。

如何在用户注销之前保留此值。

【问题讨论】:

  • 如果您在会话中保留了该值,那么它必须显示这些值,直到会话没有被破坏。
  • 所以我没有根据代码正确存储会话中的值?
  • 您在哪里设置了会话中stream 的值?我在你的代码中看不到。在您的控制器中的会话Session::set('stream','somedata'); 中设置数据。
  • 我只是传递一个带有重定向路由的变量,我们如何通过在登录时重定向设置会话变量
  • 检查下面的答案。

标签: session laravel-4 session-variables


【解决方案1】:

来自 laravel 官方documentation

Flash 数据

有时您可能希望将项目存储在会话中仅用于下一个 要求。您可以使用 flash 方法执行此操作。数据存储在 使用此方法的会话将仅在后续期间可用 HTTP 请求,然后会被删除。闪存数据主要是有用的 对于短暂的状态消息:

$request->session()->flash('status', 'Task was successful!');

如果您需要为更多请求保留闪存数据,您可以 可以使用reflash 方法,它将保留所有闪存数据 周围有一个额外的要求。如果你只需要保持具体 flash 数据,你可以使用keep 方法:

$request->session()->reflash();

$request->session()->keep(['username', 'email']);

【讨论】:

  • 有没有类似 Session::put("key","value") 的重定向?因为登录后我得到了“SomeData”,但是当我刷新页面时它消失了。
  • 你试过我的答案了吗??
  • 是的,我尝试了重定向,但它说类会话不能与重定向一起使用。
  • 为了更清楚,我对多个表使用多重身份验证假设表用户、学生表 1 和学生表 2,登录过程对于所有表都非常好,即使过滤器工作良好,但登录后学生1,我用从学生登录页面获取的值动态设置身份验证检查。我想在注销过程中保持相同的值。但是登录后该值仅出现一次,当我刷新时,我将值重置并变为空。
  • 我不确定,但刷新页面后flash也会重置。
猜你喜欢
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 2011-08-28
  • 2018-03-03
  • 2016-07-14
  • 2012-12-09
  • 2018-03-01
相关资源
最近更新 更多