多应用下的middleware.php文件开启session

来源:6-8 ajax登录-基本参数校验(普通方式校验)

活着smile

2019-12-28

老师,您看我这么理解对不对。
因为之前使用的是系统自带的获取验证码方式,也就是下面这一段

<div class="admin-captcha">{:captcha_img()}</div>

想要让admin中的middleware.php文件生效,则需使用自己创建的创建验证码方法即可

<div><img src="{:url('admin/captcha/captcha')}" alt="captcha" id="canvas" class="admin-captcha" width="90" height="40"/></div>

图片描述

至于为什么在使用内置的验证码时,admin目录下的middleware.php开启\think\middleware\SessionInit::class无效,据我实测,不是没有开启session,而是自带的判断验证码是否正确的方法中$res = password_verify($code, $key);这一段代码验证密码是否和散列值匹配返回了false,至于为什么还望老师解答!!!

public function check(string $code): bool
    {
        if (!$this->session->has('captcha')) {
            return false;
        }

        $key = $this->session->get('captcha.key');

        $code = mb_strtolower($code, 'UTF-8');

        $res = password_verify($code, $key);	//使用admin目录下的middleware.php时返回了false

        if ($res) {
            $this->session->delete('captcha');
        }

        return $res;
    }
写回答

3回答

慕的地8283736

2020-03-16

我也有疑问,然后你把那个 == Index让他没登陆别拦截就行了,!=  Login 就不行。//img.mukewang.com/szimg/5e6f767d09312b0716880891.jpg

0
0

球球789

2020-01-14

多应用下session失效导致登录问题,一步解决:
app\middleware.php中 第9行前的双斜杠去掉,使之生效即可

0
0

帅气的狗头

2019-12-29

目前能想到的原因,应该是调用扩展 tp-captcha 中的 CaptchaController 生成验证码图片时,未开启 session,导致 验证key 未写入到 session,所以在 admin 模块下使用 captcha_check() 一直未 false, 输出 session 中 captcha 也为空, 你品品

0
1
活着smile
好像不是吧,我在admin下面的middleware.php中间件中已经开启了session,而且我尝试这在中间件中输出了一个值$a,然后在加载登录页面的方法login/index中也输出了一个值$b,最后得到的输出结果顺序是$a、$b。这就是说明在加载登录页面之前,已经走了中间件
2019-12-29
共1条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1458 学习 · 1310 问题

查看课程