PC项目——vue 脚手架中实现阿里云人机滑动验证

转自๑柯帆๑

找半天才找到这个可用的 vue 脚手架中实现阿里云人机滑动验证

一、报错问题解决

描述:照官网写的引入方式引入vue报错 AWSC is not define
解决:.html文件引入script标签后
<!-- 阿里滑块 -->
<script src="https://g.alicdn.com/AWSC/AWSC/awsc.js"></script>
在使用滑块的页面中需要再引入一遍script,大概是在页面内容之前要先加载该功能的资源吧
<script type="text/javascript"></script>

二、记录整个项目流程

1.html文件中script标签引入阿里滑块js资源
2.使用滑块的页面或组件中再次进入script标签
3.组件中构建滑块容器

(对于一个页面中嵌套多个组件的登录最好滑块数量不超过两个,亲身项目经历,会导致滑块重置等方法失效)

<div id='nc1'></div>
<div id='nc2'></div>
4.编写滑块初始化方法,我写的是同个路由页面两个滑块切换

单个滑块的方法在阿里滑块官网介绍入口中可以参考

data () {
	ncData: {}, // 用于存放滑动成功后的回调数据
	box1: null, // 用于接收整个滑动对象window.nc
	// 每个容器对应一个box属性,所以我在data中定义了两个box属性
	box2: null
}
methods: {
// 滑块测试
    init (idName, i) { 
    // idName是多个滑块的容器名称,i是data中用来接收整个滑块返回对象的属性
      const myLang = {
        'cn': {
          // 加载状态提示。
          'LOADING': '加载中...',
          // 等待滑动状态提示。
          'SLIDE': '请向右滑动验证',
          // 验证通过状态提示。
          'SUCCESS': '验证通过',
          // 验证失败触发拦截状态提示。
          'ERROR': `哎呀,出错了,点击<a href="javascript:__nc.reset()">刷新</a>再来一次`,
          // 验证失败触发拦截状态提示。
          'FAIL': `验证失败,请重试,点击<a href="javascript:__nc.reset()">刷新</a>再来一次`
        }
      }
      let _this = this
      // 实例化nc
      AWSC.use('nc', function (state, module) {
        // 初始化
        window.nc = module.init({
          // 应用类型标识。它和使用场景标识(scene字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的appkey字段值,请务必正确填写。
          appkey: 'XXXXXXXXXXX',
          // 使用场景标识。它和应用类型标识(appkey字段)一起决定了滑动验证的业务场景与后端对应使用的策略模型。您可以在人机验证控制台的配置管理页签找到对应的scene值,请务必正确填写。
          scene: 'XXXX',
          renderTo: idName, // idName就是要渲染滑动的容器id名,即上面的nc1/nc2
          upLang: myLang,
          success: function (data) {
            _this.ncData = {
            // 将登陆所需要的所有数据存放data中
              sessionId: data.sessionId,
              sig: data.sig,
              token: data.token,
              scene: 'XXXX'
            }
            _this.$message.success('成功,请继续操作')
          },
          // 滑动验证失败时触发该回调参数。
          fail: function (failCode) {
            _this.$message.warning('失败,请点击重试')
          },
          // 验证码加载出现异常时触发该回调参数。
          error: function (errorCode) {
            window.console && console.log(errorCode)
          }
        })
        // 给this.box1/this.box2分别赋值
        _this[i] = window.nc
      })
    }
  }
5.mounted中进行初始化调用
mounted () {
	this.init('nc1', 'box1')
	this.init('nc2', 'box2')
}
6.登录失败或者切换登录时需要重新渲染重置滑块,官网提供了方法

window.nc[方法名] 或 window.nc.方法名
在这里插入图片描述
之前在data中定义了box1/box2,初始化方法中分别对其赋值了,赋值的内容就是该对象,所以重新渲染时使用方法如下

this.box1.reset()
this.box2.reset()
// 记得重置时把滑动成功获得的数据清空
this.ncData = {}
7.结束了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值