vue项目使用阿里无痕验证

<template>
  <div class="login">
          <el-form-item style="width:300px;">
            <el-button type="primary" @click="submitForm()" style="width:300px;height:50px;">登录</el-button>
          </el-form-item>
        </el-form>

  </div>
</template>

<script>
  export default {
    data() {
      return {
      
        },
    },
    methods: {
      //登录
      submitForm(formName) {
            this.aa()   //无痕方法
      },
      //
      set_ALY_config() {
        var _this = this
        return new Promise((resolve, reject) => {
          var nc_token = ["CF_APP_1", (new Date()).getTime(), Math.random()].join(':');
          window.NVC_Opt = {
            appkey: this.alyConfig.Appkey, // 开通无痕验证提供的appkey 与scene
            scene: this.alyConfig.Scene,
            token: nc_token,
            isH5: false,
            popUp: false,
            renderTo: '#captcha',
            nvcCallback: function(data) {
              // console.log(data, '===')
              // console.log(555, '1111')
              // console.log(data, '===')
              // getALYData(data).then(res => {
              //   console.log(res)
              //   if(res.data.code == 1000 || res.data.code == 100 || res.data.code == 200){ // 无痕验证失败二次验证
              //   console.log(res)
              //      _this.$message({
              //       message: '验证成功',
              //       type: 'success'
              //     });
              //   } else {
              //     _this.$message({
              //       message: '当前访问用户过多,请刷新后重试!',
              //       type: 'error'
              //     });
              //   }
              // })
              // this.$get('')
              // data为getNVCVal()的值,此函数为二次验证滑动或者刮刮卡通过后的回调函数
              // data跟业务请求一起上传,由后端请求AnalyzeNvc接口,接口会返回100或者900
            },
            //回调参数。
            //回调参数。
            nvcCallback: function(data) {
              // console.log(data, '****')
              // 其中,data为getNVCVal()函数的值,该函数为二次验证滑动或者刮刮卡通过后的回调函数。
              // data与业务请求一同上传,由后端请求AnalyzeNvc接口并返回100或者900。
            },

            // trans: {"nvcCode":600, "key1": "code0"},
            language: "cn",
            //滑动验证长度配置
            customWidth: 300,
            customHeight: 40,
            //刮刮卡配置项
            width: 500,
            height: 125,
            elements: [
              "//img.alicdn.com/tfs/TB17cwllsLJ8KJjy0FnXXcFDpXa-50-74.png",
              "//img.alicdn.com/tfs/TB17cwllsLJ8KJjy0FnXXcFDpXa-50-74.png"
            ],
            bg_back_prepared: "//img.alicdn.com/tps/TB1skE5SFXXXXb3XXXXXXXXXXXX-100-80.png",
            bg_front: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABQCAMAAADY1yDdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAADUExURefk5w+ruswAAAAfSURBVFjD7cExAQAAAMKg9U9tCU+gAAAAAAAAAIC3AR+QAAFPlUGoAAAAAElFTkSuQmCC",
            obj_ok: "//img.alicdn.com/tfs/TB1rmyTltfJ8KJjy0FeXXXKEXXa-50-74.png",
            bg_back_pass: "//img.alicdn.com/tfs/TB1KDxCSVXXXXasXFXXXXXXXXXX-100-80.png",
            obj_error: "//img.alicdn.com/tfs/TB1q9yTltfJ8KJjy0FeXXXKEXXa-50-74.png",
            bg_back_fail: "//img.alicdn.com/tfs/TB1w2oOSFXXXXb4XpXXXXXXXXXX-100-80.png",
            upLang: {
              "cn": {
                _ggk_guide: "请摁住鼠标左键,刮出两面盾牌",
                _ggk_success: "恭喜您成功刮出盾牌
继续下一步操作吧"
, _ggk_loading: "加载中", _ggk_fail: ['呀,盾牌不见了
请'
, "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题' ], _ggk_action_timeout: ['我等得太久啦
请'
, "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题' ], _ggk_net_err: ['网络实在不给力
请'
, "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题' ], _ggk_too_fast: ['您刮得太快啦
请'
, "javascript:noCaptcha.reset()", '再来一次', '或', "http://survey.taobao.com/survey/QgzQDdDd?token=%TOKEN", '反馈问题' ] } }, callback: function(data) { // console.log(this.Scene) // console.log(data, '///') // console.log(scene, 'scene') // window.console && console.log(scene, 'scene') // window.console && console.log(nc_token, 'nc_token') // window.console && console.log(data.csessionid) // window.console && console.log(data.sig) // 返回给后台 // console.log('1111111') //创建异步对象 let Appkey = 'FFFF0N00000000008DA2'; let Scene = 'nvc_login'; let client = sessionStorage.getItem('client') const xhr = new XMLHttpRequest(); //设置请求的类型及url //post请求一定要添加请求头才行不然会报错 xhr.open('get', baseURL.baseURL+'/slidingVerification?' + 'token=' + nc_token + '&sig=' + data.sig + '&scene=' + Scene + '&sessionId=' + data.csessionid+'&client='+client, true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //发送请求 xhr.send(); xhr.onreadystatechange = function() { // 这步为判断服务器是否正确响应 if (xhr.readyState == 4 && xhr.status == 200) { const data = xhr.responseText; const json = JSON.parse(data) // console.log(json, "浏览器返回将结果"); sessionStorage.setItem('token', json.data.token) // console.log(this.token) // console.log(xhr.responseText, "浏览器返回将结果"); // console.log(clientKey,"") // localStorage.setItem(); 存 } }; }, } resolve() }) }, yourRegisterRequest(url, params) { let _this=this var callbackName = ('jsonp_' + Math.random()).replace('.', ''); params += '&callback=' + callbackName; var o_scripts = document.getElementsByTagName("script")[0]; var o_s = document.createElement('script'); o_scripts.parentNode.insertBefore(o_s, o_scripts); //您注册请求的业务回调。 window[callbackName] = function(json) { if (json.data.code == 100 || json.data.code == 200) { //注册成功 sessionStorage.setItem('token', json.data.token) sessionStorage.setItem('client',_this.ruleForm.client) nvcReset(); _this.loginPost() // alert("register success!") } else if (json.data.code == 800 || json.data.code == 900) { //直接拦截 _this.$message({ type: "info", message: "当前登录环境异常,请稍后再试!" }); nvcReset(); // alert("register failed!") } else { //唤醒滑动验证 getNC().then(function() { _nvc_nc.upLang('cn', { _startTEXT: "请按住滑块,拖动到最右边", _yesTEXT: "验证通过", _error300: "哎呀,出错了,点击刷新再来一次", _errorNetwork: "网络不给力,请点击刷新", }) _nvc_nc.reset() }) } }; o_s.src = url + '? ' + params; }, // 动态加载js文件 get_ALY_file() { try { var stamp = new Date().getTime(); var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', 'https://g.alicdn.com/sd/nvc/1.1.112/guide.js?t=' + stamp); document.documentElement.appendChild(script); } catch (e) { } }, aa() { var params = 'nvc=' + getNVCVal()+'&client='+this.ruleForm.client; this.yourRegisterRequest(baseURL.baseURL+'/noTraceValidation', params) }, loginPost(){ let client = sessionStorage.getItem('client') console.log(client,'联系程序开发者') // alert('联系程序开发者'); this.$post("login", { pwd: this.ruleForm.password, username: this.ruleForm.name, token: sessionStorage.getItem('token'), //验证成功后台反的 client: client, //随机数,后台找不到传给他的数据,另外加的 用来绑定用户唯一 }).then(response => { if (response.code == 200) { // console.log(response); this.$router.push({ path: "/home" }); location.reload(); } else { sessionStorage.removeItem('token'); sessionStorage.removeItem('client'); this.msg = response.msg; this.open4(); this.ruleForm.img = ""; this.ruleForm.img = baseURL.baseURL + "/imgCode?" + Math.random(); } }); } }, created() { this.ruleForm.client = Date.now(); console.log(this.ruleForm.client) this.ruleForm.img = baseURL.baseURL + "/imgCode" // console.log(baseURL.baseURL) // this.codeGET(); var _self = this; document.onkeydown = function(e) { var key = window.event.keyCode; if (key === 13) { console.log(111); _self.searchEnterFun(); } }; this.set_ALY_config().then(res => { this.get_ALY_file() }) // 保证先在window下存在变量NVC_Opt再去加载js文件 // this.set_ALY_config() } }; </script>

你可能感兴趣的:(vue)