前后台分离后,登录时总是提示验证码错误

小白问下,img 标签 获取的 captcha,

在登录验证是 控制器 没有拿到 captcha的cookie

评论区

JFinal

2019-03-14 22:03

参考一下 jfinal club 中的 LoginController 中的 captcha() 方法与 doLogin() 方法

以及 LoginValidator 中的 validateCaptcha("captcha", "captchaMsg", "验证码不正确") 方法

此外,还要参考 /src/main/webapp/_view/login/index.html 中的
input type="text" name="captcha"
以及
img title="点击刷新" class="captcha" src="/login/captcha"

将这几处读懂就会用了, 在这里不是一两句话能说明白的

老衲不懂啊

2019-03-15 08:51

@JFinal 老大 参考了一下 ,登录页是这么写的
验证码获取:
《img id="img" src=""》《/img》
《script》
document.getElementById("img").src = geturl() + '/login/captcha';
《/script》
登录通过
$.post(geturl() + "/login/doLogin", submitData, function(data) {
}, "json");

通过这样 请求,登录 时的控制器 cookie 为空 并没有 _jfinal_captcha,
我通过 postman 测试时是 ok 的。
想问下是什么原因,这两次请求的 环境不一样吗?

JFinal

2019-03-15 11:58

@老衲不懂啊 下面的代码有问题:
《script》
document.getElementById("img").src = geturl() + '/login/captcha';
《/script》

这段 js 执行的时候,所要求的一些东东还没准好,例如 geturl() 所要求的 js 文件或者处于 html 中的片段没加载完成

打开 chrome 的开发者工具中的控制台,查看 js 错误

tbynet

2019-03-16 09:54

估计是跨域了,你这个前后台分离是指前端和后端各自独立的吧