ThinkPHP6.0 Session 问题

自已为了学习TP6,写了一个登录管理界面,用户名、密码、验证码。前几天还可以正常登录,验证码也正常,不知道自己怎么想的,或许是手贱吧!把Cookie和Session一起用,前段时间登录正常,今天心血来潮想再玩玩,就打开phpstudy,启动 Apache+MySQL,然后打开chrone.exe浏览器,快速输入http://localhost:8081/admin/Index/login.html,输入用户名、密码、验证码,点登录按钮,提示 验证码 错误,错误很常见,我再刷新一下页面,再熟练地输入用户名、密码、验证码,点登录按钮,又提示验证码错误,一下就懵B了,好好的怎么就出现这样的提示,然后一统查,首先查看 app\middleware.php 这个文件

<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
     \think\middleware\CheckRequestCache::class,
    // 多语言加载
    // \think\middleware\LoadLangPack::class,
    // Session初始化
     \think\middleware\SessionInit::class,
     // 跨域解决
     \think\middleware\AllowCrossDomain::class
    
];

 \think\middleware\SessionInit::class 这个的注释去掉了,为什么Session不能使用,打开 Microsoft Edge,熟悉地输入,点击登录按钮,嗯,可以登录,一切正常,为什么chrone提示验证码错误,然后一统百搜,结果都差不多,后来想想还是去官网看看吧,然后打开https://www.kancloud.cn/manual/thinkphp6_0/1037635

查看下面的评论,大多是Session丢失什么的呀,后来看到

kaysonzhang@kaysonzhang ·3 年前
tp6如果php.ini中的session.cookie_secure 默认配置是不打开的,config/cookie.php中的secure设置为true的话将不能读取session,需要session.cookie_secure手动打开设置才可以,原来tp5的是有ini_set('session.cookie_secure', $config['secure']);这个配置,tp6没有了,建议同步设置一下

灵光一现,赶紧看看我的config/cookie.php

果然secure的值改为true了,什么时候改的忘记了,改回来试试吧!

<?php
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
return [
    // cookie 保存时间
    'expire'    => 60 * 60 * 24,
    // cookie 保存路径
    'path'      => '/',
    // cookie 有效域名
    'domain'    => '',
    //tp6如果php.ini中的session.cookie_secure 默认配置是不打开的,config/cookie.php中的secure设置为true的话将不能读取session,需要session.cookie_secure手动打开设置才可以,
    //原来tp5的是有ini_set('session.cookie_secure', $config['secure']);这个配置,tp6没有了,建议同步设置一下
    //  cookie 启用安全传输 false  secure设置为true的话将不能读取session
    'secure'    => false,
    // httponly设置
    'httponly'  => false,
    // 是否使用 setcookie
    'setcookie' => true,
    // samesite 设置,支持 'strict' 'lax'
   // 'samesite'  => 'none',
];

改过来后,再打开chrone浏览器,刷新,输入,点登录,哈哈,正常跳转登录成功。同样打开Microsoft Edge浏览器,刷新,输入,点登录,哈哈,正常跳转登录成功。OK

config/session.php

<?php
// +----------------------------------------------------------------------
// | 会话设置
// +----------------------------------------------------------------------

return [
    // session name
    'name'           => 'PHPSESSID',
    // SESSION_ID的提交变量,解决flash上传跨域
    'var_session_id' => 'session_id',
    // 驱动方式 支持file cache
    'type'           => 'file',
    // 存储连接标识 当type使用cache的时候有效
    'store'          => null,
    // 过期时间
    'expire'         => 60 * 60 * 24,
    // 前缀
    'prefix'         => '',
    'serialize'    => ['json_encode', 'json_decode'],
];

login.php

 public function chklogin(Request $request) {

 $roleinfo  = Db::table('user_role')->where('Uid',$result["Id"])->find();
                           if(!empty($roleinfo))
                           {
                               Session::set('Ausername', $result["username"]);
                           \think\facade\Session::save();
                           echo json_encode(['code'=>0,'info'=>"登录成功".session('Ausername')]);

                           
                           }else{
                               echo json_encode(['code'=>1,'info'=>"登录失败"]);
                 
                           }
}

index.php

 public function index()
 {

 View::assign('Ausername',Session::get('Ausername'));
 return View::fetch('index');


}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值