• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 前端怎么调用后台thinkphp6验证码

前端怎么调用后台thinkphp6验证码

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了前端调用,thinkphp6验证码等相关知识,希望对您有所帮助

在做前端登录页面时,想在登录页面调用后端thinkphp6的验证码功能,于是尝试前端通过后端的api接口获取captcha的图片地址。尝试的方法是设置后端的api方法getCaptcha,在方法中通过调用captcha_src()后,可以获得图片地址,然后再返回给前端调用,可以正常显示验证码图片。但是问题来了,登录时总是提示验证码不正确。后来经过对比发现所获得的验证码的sessionID与我登录提交时的sessionID不一致,所以导致验证不通过。

为什么前端通过img标签的src地址指向thinkphp6的验证码地址时,后台所生成的sessionID与我在当前页面操作时所生成的sessionID不一样呢,这个机制目前还是搞不明白。

后来看到captcha类内有直接生成验证码的方法create(),经测试通过api调用此方法可以生成验证码并且sessionID与我后续登录时的sessionID一致,但是又遇到另一个问题,此create()方法是返回response方法的,前端的uni.request是无法获取的,导致验证码图片是无法显示的。经过思考,确定对captcha类进行修改,把create()方法修改为另一个新的方法,该方法返回的是生成后的验证码的base64编码,然后再把该字符串结果返回前端,最终前端可以正常显示与验证登录了。


具体代码如下:

1、新增captcha类的方法createApi(),该方法其实就是create()的复制,只是把返回的修改如下:

$base64_data = 'data:image/png;base64,' . base64_encode($content);//合成图片的base64编码return $base64_data;

2、api方法调用返回

public function getCaptcha(){    $captcha = Captcha::createApi();    return apiResultShow(config("status.success"),lang("success"),$captcha);}

3、前端接收展示验证码

<view @click="getCaptcha()">    <captcha-img  :captchaSrc="captchaSrc" ></captcha-img></view>  ........................................  getCaptcha(){    var request_data = {};    var sign = this.sign(request_data);    uni.request({        url: '/url/api/member/getCaptcha',        data: {             sign:sign        },        method: 'POST',        header:{            "Content-Security-Policy": "upgrade-insecure-requests",            "X-Requested-With": "XMLHttpRequest",        },        dataType:'json',        success: (res) => {            if(res.data.status == 0){                var img_src = res.data.result;                this.captchaSrc = img_src;            }else{                this.captchaSrc ="";                                    }         }    });},


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 前端怎么调用后台thinkphp6验证码

相关文章

  • 2022-04-29Photoshop设计时尚大气的3D螺旋球
  • 2022-04-29如何利用PHP来输出一个杨辉三角
  • 2022-04-29详解Node.js Buffer的使用
  • 2022-04-29关于thinkphp5中分页paginate()之后的数据中添加键值
  • 2022-04-29CSS实现领积分动画效果
  • 2022-04-29Illustrator制作OSX风格磁铁图标
  • 2022-04-29AI绘制质感电池图标
  • 2022-04-29一文带你PHP利用phpmailer实现邮件发送功能
  • 2022-04-29怎么忽略FTP登录来升级WordPress
  • 2022-04-29CDR绘制木纹质感APP图标

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 如何解决php ueditor上传图片出现未知错误的问题
    • Discuz! X3.3 X3.2移除dz云平台cp.discuz.qq.com去除discuz_tips去除discuz.gtimg.cn
    • 教你快速修改WordPress中已有的头像
    • vuejs中v-show和v-if的区别是什么
    • Javascript删除字符串最后一个字符
    • 带大家聊聊小程序中的几种页面传参方式
    • Discuz不使用插件实现简单的打赏功能
    • PHP高清晰度无损图片压缩功能的实现代码
    • Photoshop制作立体效果的图案艺术字
    • Thinkphp中JS如何获取模板变量(示例详解)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有