beforeEach前置路由守卫 vue

r囧r小猫 2022-12-03 09:53 203阅读 0赞

路由守卫:通过这个名词显而易见就类似于古代城池前士兵看守,你只有士兵认的通行证才能让你进入,如果不符合或者没有通行证那么你无法进入这个城池,这也是为了安全起见。

同样vue中的路由守卫也是一样的,一般用来拦截路由请求。

使用场景:

  • 通常用在登录拦截,可以是全局也可以局部的。
  • 做后台管理系统,会根据不同的用户权限展示不同的内容。

主要思想:

  • 登录成功的时候存一个状态,可以放在localStorage/sessionStorage/store任意一个都可以
  • 然后通过路由钩子判断一下,符合条件可以进入系统,不符合条件仍在登录页

需求说明:

一个网站你没有登录,想要通过改变地址栏的方式直接进入,为了安全起见这是不可以的。这时候你就可以设置前置守卫route.beforeEach路由。

代码:

login.vue

以下代码是登录接口:存的状态 sessionStorage.setItem(“isLogin”, true);

  1. let params = {
  2. mobile: Number(this.mobile),
  3. captcha: Number(this.captcha),
  4. type: 2,
  5. };
  6. loginApi.login(params).then((res) => {
  7. if (res.code == 1) {
  8. this.$toast("登录成功");
  9. sessionStorage.setItem("isLogin", true);
  10. // localStorage.setItem("token", res.token);
  11. this.$router.push({
  12. name: "invoiceList",
  13. query: {
  14. housecode: this.housecode,
  15. ownername: this.ownername,
  16. },
  17. });
  18. } else {
  19. this.$toast(res.message);
  20. }
  21. });
  22. },

局部页面:设置前置路由

  1. export default {
  2. beforeRouteEnter(to, from, next) {
  3. if (sessionStorage.getItem("isLogin") && to.query.housecode) {
  4. next();
  5. } else {
  6. next({ path: "/login", query: { Rurl: to.fullPath } });
  7. }
  8. }
  9. }

前置路由守卫详细介绍:

https://www.cnblogs.com/lhl66/p/9195787.html

发表评论

表情:
评论列表 (有 0 条评论,203人围观)

还没有评论,来说两句吧...

相关阅读

    相关 react守卫

    react中一切皆组件--2018.7.18 目标:自定义user界面的前置路由守卫,当用户点击要进入user组件时,路由守卫发起判断,如果条件满足则进入,否则跳转至l

    相关 beforeEach守卫 vue

    路由守卫:通过这个名词显而易见就类似于古代城池前士兵看守,你只有士兵认的通行证才能让你进入,如果不符合或者没有通行证那么你无法进入这个城池,这也是为了安全起见。 同样vue中

    相关 vue 守卫

    在main.js中,通过引入路由文件后,通过该对象使用 相当于路由的生命周期 1、全局前置守卫 (1)router.beforeEa