【问题标题】:Session not persist on Laravel 5.4会话不会在 Laravel 5.4 上持续存在
【发布时间】:2018-06-25 16:57:36
【问题描述】:

我在使用 Laravel Sessions 时遇到了一些问题,现在我在 Laravel 5.4 下工作,所以,我使用这段代码来设置会话:

$request->session()->put('usuario', 'somevalue');

但是当我尝试使用此代码从同一控制器上的另一个函数获取会话值时:

$request->session()->get('usuario');

我得到 NULL,我正在尝试导入 Session 并使用“web”中间件

use Illuminate\Support\Facades\Session;

但我仍然遇到同样的错误。

路线:

Route::group(['middleware' => 'web'], function () {
Route::post('login','UsuarioController@login');
Route::get('usuariodatos','UsuarioController@getDatos');
});

控制器,功能登录:

$data=$request->json()->all();
    $user=Usuario::where('correo_electronico', $data['login_correo'])->first();

    if(!empty($user->id_usuario)) {
        if(Hash::check( $data['login_passwd'], $user->passwd) == true) {
            $request->session()->put('usuario', $user); 

            $ses = $request->session()->get('usuario');
          return json_encode(array("resultado" => $ses));

        } else {

        }
    } else {
    }

控制器函数获取会话:

public function getDatos(Request $request)
{
  return json_encode(array("resultado"=>$request->session()->get('usuario')));
}

谁能帮帮我?

谢谢

【问题讨论】:

  • 尝试在$request->session()->put('usuario', 'somevalue');之后推送$request->session()->get('usuario');,看看是否设置了会话
  • 是的,我刚刚尝试过,设置后我得到会话值没关系,但是当我转到另一条路线时,我得到 NULL
  • 你能显示你的路线,控制器吗?
  • 我刚刚将它添加到我的原始帖子中
  • 好吧,我认为 Hash::check( $data['login_passwd'], $user->passwd) == true!empty($user->id_usuario 条件为 false ,这就是为什么您的会话没有设置值

标签: session laravel-5.4


【解决方案1】:

您需要添加: $request->session()->save();

在 put 之后,否则会话将不会持续。

奇怪的是,即使在官方文档中也没有这个重要的细节。

【讨论】:

    【解决方案2】:

    只需删除 web 中间件。从 Laravel 5.3 开始,它默认应用于所有路由。如果你手动应用它,那么会话逻辑会执行两次,它会中断。

    关于session()->save()的注释:

    如果您返回 Laravel 响应(即view()response() 等),则无需调用此方法。 Laravel 将在返回响应之前调用它。同样,如果您两次调用此方法,您可能会丢失会话中的所有闪存数据...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 2019-01-05
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 2015-12-23
      • 2023-04-03
      相关资源
      最近更新 更多