多应用下的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 就不行。
00 -
球球789
2020-01-14
多应用下session失效导致登录问题,一步解决:
app\middleware.php中 第9行前的双斜杠去掉,使之生效即可00 -
帅气的狗头
2019-12-29
目前能想到的原因,应该是调用扩展 tp-captcha 中的 CaptchaController 生成验证码图片时,未开启 session,导致 验证key 未写入到 session,所以在 admin 模块下使用 captcha_check() 一直未 false, 输出 session 中 captcha 也为空, 你品品
012019-12-29
相似问题