thinkphp6.0 中session获取不到值

  • 环境是本地 LAMP + thinkPHP6.0
  • 问题描述:
    • 在登录的时候, 使用 session() 函数将用户信息写入 session, 但是在登录中间件中获取到的值是 null
    • 同事和线上用的都是 WAMP, 就没有问题, 我本地的 LAMP 是有时候可以获取session, 但有时候不可以, 不可以占多数
  • session 文件有写入权限, 已经开启了 session_start, session 并没有前缀
  • 代码如下:
    LoginController.php 中的 login方法
      public function login()
      {
          $username = $this->request->post('username', '', 'html_in,trim');
          $password = $this->request->post('password', '', 'html_in,trim');
          $res = AuthService::checkLogin($username, $password);
      }
    AuthService.php 中的 checkLogin方法
      public static function checkLogin($username, $password) 
      {
          ...
          session('admin', $userInfo); 
          return $userInfo;
      }
    AuthMiddleware 中间件的 handle 方法
      public function handle($request, \Closure $next)
      {
          ...
          $admin = session('admin'); // 在这个位置获取不到值
          ...
          return $next($request);
      }
    在全局中间件中已经添加了 AuthMiddleware
    middleware.php
      return [
          // Session初始化
          'think\middleware\SessionInit',
          \app\admin\http\middleware\AuthMiddleware::class,
      ];
  • LoginController.php 中是可以获取到 session的, 但是在 AuthMiddleware.php 中获取不到

  • 求各位大哥指点一下
讨论数量: 4
VeryCool

朋友,最不济也贴一段代码吧!你这样搞 我们只能脑补代码了,自己做测试又是没有问题的 最起码:

  • 1.thinkphp版本号
  • 2.贴出运行代码
  • 3.贴出环境 是本地还是线上怎么安装的
3年前 评论
qingshui (楼主) 3年前
九霄道长

中间件里初始化了吗 middleware

3年前 评论
qingshui (楼主) 3年前
chenvle

app/middleware.php 里面看一下有没有把\think\middleware\SessionInit::class注释了

3年前 评论
qingshui (楼主) 3年前
chenvle (作者) 3年前
chenvle

file

3年前 评论
qingshui (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!