首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
前后端分离,还能使用jfinal自带的验证码吗
lyq027
2018-03-30 15:34
使用vue和webpack,前后端分离,数据请求用axios,现在有个问题,想前端弄验证码,jfianl自带的验证码还能使用吗?
项目:
JFinal
6
1
评论区
JFinal
2018-03-30 15:42
当然可以,在 img 的 src 中直接指向 action ,而 action 中直接 renderCaptcha()
回复
lyq027
2018-03-30 15:47
@JFinal
已解决,jfinal真心强大。感谢
回复
liugz
2019-08-16 00:36
@JFinal
app中没有cookie,如何获取captchaKey校验验证码
回复
JFinal
2019-08-16 08:23
@liugz
在不支持 cookie 的场景下,参过在 url 中问号挂参,或者表单传参的方式传给服务端
回复
liugz
2019-08-16 13:23
@JFinal
刚看了下源码,没太明白,
如果前端不支持cookie,那么后台renderCaptcha()给前端
组件上后,
后台如何获取验证码的key传给前端的?
否则用户在前端输入验证码传给后端进行校验时,后端不知道验证码的key无法进行校验吧,
源码上这个校验方法:public static boolean validate(String captchaKey, String userInputString) {...}
回复
JFinal
2019-08-16 14:08
@liugz
这样来简单理解:
1:以前的验证码的 key 是存放在 cookie 中的,现在 cookie 不能用的,需要扩展一个 MyCaptchaRender
2:在扩展出来的 MyCaptchaRender 中原先的:
Cookie cookie = new Cookie(captchaName, captcha.getKey());
改成:
request.setAttribute(captchaName, captcha.getKey());
3:在页面中拿到这个 captchaName 的值,并放在隐藏表单域中,或者问号挂参的方式在提交的时候将该值提交到服务端,例如:
localhost/action?captchaName=xxxx
4:在服务端仿照 validateCaptcha(...) 方法,将原来从 cookie 取值的方式改成使用下面的方式取:
getPara(captchaName);
总之,就是将原先通过 cookie 存取的代码改成使用 controller 中的 HttpServletRequest
回复
liugz
2019-08-16 14:28
好的谢谢,我想也只能额外扩展一个方法了
回复
JFinal
2019-08-16 14:42
@liugz
扩展出来以后的使用是非常简单的:
render(new MyCaptchaRender());
回复
JFinal
2020-08-06 10:08
@贺月月
基本照抄现有的 CaptcahRender()即可
回复
你好啊世界
2020-12-31 14:34
太好了,今天刚好用到~
回复
konguwmang
2022-02-15 11:54
@JFinal
大佬,这一段没有理解, img 的 src指向renderCaptcha(); 而form的action指向login方法。前后端分离时想要处理验证码验证问题该怎么做呢?
回复
发送
我要反馈
热门反馈
扫码入社