一、vue-cookies

  参考文档简书:https://www.jianshu.com/p/535b53989b39

  参考文档npm:https://www.npmjs.com/package/vue-cookies

1、安装vue-cookies

npm i vue-cookies -S

2、挂载到Vue实例

import VueCookies from 'vue-cookies'
Vue.use(VueCookies);

3、使用

  1)设置一个cookie

  this.$cookies.set(keyName, value)   //return this

  2)是否存在一个cookie

  this.$cookies.isKey(keyName)        // return false or true

  3)获取一个cookie

  this.$cookies.get(keyName)       // return value

4、从浏览器查看cookie

二、极验滑动验证(geetest)

  官网:https://docs.geetest.com/

  要想用geetest滑动验证,既要在服务端部署,又要在客户端部署,本篇简单介绍客户端部署的知识。

  准备工作:服务端部署完成

1、引入初始化函数,它用于加载对应的验证JS库

  <script src="gt.js"></script>

2、调用初始化函数`initGeetest`进行初始化

ajax({
url: "API1接口(详见服务端部署)",
type: "get",
dataType: "json",
success: function (data) {
// 请检测data的数据结构, 保证data.gt, data.challenge, data.success有值
initGeetest({
// 以下配置参数来自服务端 SDK
gt: data.gt,
challenge: data.challenge,
offline: !data.success,
new_captcha: true
}, function (captchaObj) {
// 这里可以调用验证实例 captchaObj 的实例方法
})
}
})

  以上初始化过程,需要结合服务端 SDK 使用,因为初始化所传入的配置参数来自服务端 SDK。

3、通过geetest中API方法的appendTo方法,将滑动验证按钮渲染到页面

<div id="captcha-box"></div>
...
<script>
initGeetest({
// 省略配置参数
}, function (captchaObj) {
captchaObj.appendTo('#captcha-box');
// 省略其他方法的调用
});
</script>

4、通过ajax方式进行二次验证

initGeetest({
// 省略配置参数
}, function (captchaObj) {
// 省略其他方法的调用 // 监听滑动验证成功,调用 onSuccess 方法
captchaObj.onSuccess(function () {
var result = captchaObj.getValidate();
     // 返回的result是object类型,包含有三个键值对,连带用户名密码提交到其他服务器
   // ajax 伪代码
ajax(apirefer, {
geetest_challenge: result.geetest_challenge,
geetest_validate: result.geetest_validate,
geetest_seccode: result.geetest_seccode, // 其他服务端需要的数据,比如登录时的用户名和密码
}, function (data) {
// 根据服务端二次验证的结果进行跳转等操作
});
});
});

三、vue-router中的导航守卫

  我们在学习动态路由匹配时了解到,当使用路由参数时,如从/user/goo导航到/user/bar,原来的组件实例会被复用,因为两个路由都渲染一个组件(导航组件),比起销毁再创建,复用则显得更加高效,不过,这意味着组件的声明周期钩子不会再被调用,我们在复用组件时,想对路由参数的变化作出响应的话,除了之前学过的用watch监听$route对象外,我们还可以使用导航守卫:

  const router = new VueRouter({ ... })

  router.beforeEach((to, from, next) => {
  // ...
  })

  Luffy项目的全局导航示例:

import router from './router'
// 全局导航守卫
router.beforeEach((to, from, next) => {
console.log(to);
console.log(from); if(VueCookies.isKey('access_token')){
let userinfo = {
username: VueCookies.get('username'),
shop_cart_num: VueCookies.get('shop_cart_num'),
access_token: VueCookies.get('access_token'),
avatar: VueCookies.get('avatar'),
notice_num: VueCookies.get('notice_num')
};
store.dispatch('getUser', userinfo)
}
next() // 必须写,否则会阻塞
});

四、Axios拦截器

  在请求或响应被 then 或 catch 处理前拦截它们,如下示例:

// 添加请求拦截器,参数config是axios实例对象
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么(比如可以为每一次请求设置请求头)
   if(VueCookies.isKey('access_token')){
    config.headers.common['Authorization'] = auth_token;
   }
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
}); // 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});

五、补充知识点

1、对element-ui的一个组件添加原生事件

<el-button @click.native.prevent="deleteRow(scope.$index, shopCartList)" type="text" size="small">删除</el-button>

  解释:对element-ui的一个组件添加原生js事件要按照上面方式写

  - click代表原生click事件;

  - native表示调用原生js事件;

  - prevent表示阻止默认事件;

Vue(7)- vue-cookies、极验滑动验证geetest、vue-router的导航守卫的更多相关文章

  1. vue-cookies、极验滑动验证geetest、vue-router的导航守卫

    一 . vue-cookies 参考文档简书:https://www.jianshu.com/p/535b53989b39 参考文档npm:https://www.npmjs.com/package/ ...

  2. 基于form表单的极验滑动验证小案例

    01.目录展示 02.url.py urlpatterns = [ path('admin/', admin.site.urls), path('login/',views.login), path( ...

  3. thinkphp整合系列之极验滑动验证码geetest

    给一个央企做官网,登录模块用的thinkphp验证码类.但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就 ...

  4. vue_drf之实现极验滑动验证码

    一.需求 1,场景 我们在很多登录和注册场景里,为了避免某些恶意攻击程序,我们会添加一些验证码,也就是行为验证,让我们相信现在是一个人在交互,而不是一段爬虫程序.现在市面上用的比较多的,比较流行的是极 ...

  5. thinkphp整合系列之极验滑动验证码

    对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...

  6. selenium+java破解极验滑动验证码的示例代码

    转自: https://www.jianshu.com/p/1466f1ba3275 selenium+java破解极验滑动验证码 卧颜沉默 关注 2017.08.15 20:07* 字数 3085  ...

  7. Python——破解极验滑动验证码

    极验滑动验证码 以上图片是最典型的要属于极验滑动认证了,极验官网:http://www.geetest.com/. 现在极验验证码已经更新到了 3.0 版本,截至 2017 年 7 月全球已有十六万家 ...

  8. python验证码识别(2)极验滑动验证码识别

    目录 一:极验滑动验证码简介 二:极验滑动验证码识别思路 三:极验验证码识别 一:极验滑动验证码简介   近些年来出现了一些新型验证码,不想旧的验证码对人类不友好,但是这种验证码对于代码来说识别难度上 ...

  9. Python 破解极验滑动验证码

    Python 破解极验滑动验证码 测试开发社区  1周前 阅读目录 极验滑动验证码 实现 位移移动需要的基础知识 对比两张图片,找出缺口 获得图片 按照位移移动 详细代码 回到顶部 极验滑动验证码 以 ...

随机推荐

  1. JVM-String常量池与运行时常量池

    Start with JVM 周志明先生著-<深入理解Java虚拟机>,书买回来好几天了,但是最近才准备开始搞一搞了(哭瞎…..).首先是第一章的Java以及JVM发展历史,大概知道了现行 ...

  2. win7系统如何配置JAVA环境变量

    1.在“计算机”右击选择“属性” 2.点击“高级系统设置” 3.点击“环境变量” 4.点击系统变量下面的“新建” (1)新建->变量名:JAVA_HOME变量值 C:\Program Files ...

  3. Oracle面试题目及解答

    这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE概念的熟悉程度. 1. 解释冷备份和热备份的不同 ...

  4. 跟着百度学PHP[17]-PHP扩展CURL的模拟登陆并获取数据

    这两天也不知道怎么,学习效率低.很无奈. 如何知道要去URL该怎么填写呢?就是填写表单中的Action内容: tempnam() 函数创建一个具有唯一文件名的临时文件. <?php header ...

  5. STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ.写在前 ...

  6. google web design html5制作工具

    Google 推出 Web Designer,帮助你做 HTML 5 设计的免费本地应用,支持 Windows 和 OS X 2013年10月1日        感谢读者 SamRaper 的提醒. ...

  7. 对hibernate的延迟加载如何理解,在实际应用中,延迟加载与session关闭的矛盾是如何处理的?

    对hibernate的延迟加载如何理解,在实际应用中,延迟加载与session关闭的矛盾是如何处理的? 解答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载.那么Hibernat ...

  8. Spring中HttpInvoker远程方法调用总结

    Spring为各种远程訪问技术的集成提供了工具类.Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程訪问功能的服务变得相当easy. 眼下,Spring支持四种远程技术: ...

  9. 小白用advanced installer建安装包

    写这篇文章的目的是由于肯定有人跟我一样非常小白,对安装包的构建又好奇.而我自己呢也要mark一下下,so--- 一.VS安装项目 首先关于安装包的构建,实用VS自带建安装项目的方式.网上有个中文工具叫 ...

  10. 房间WIFI信号不好怎么办?——无线路由桥接(WDS)

    背景 1.无线路由在客厅,房间的WIFI信号很差,只有1-2格,虽说是100M的网速,但是从客厅到房间要经过3道墙!电脑的无线接收功能一般都很一般,网速不好理所当然. 2.弄一根网线从客厅连接起来很傻 ...