vue3框架Vite + vue Router + ts 登录后返回上一页或首页

这篇具有很好参考价值的文章主要介绍了vue3框架Vite + vue Router + ts 登录后返回上一页或首页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目(Vue3):Vite + vue Router + ts

需求描述:

登录后跳转情况:
① 项目中有些页面是需要登录后才可以访问的,如果没有登录的情况下,访问该页面会自动跳转到登录页,完成登录操作后,需要再次返回到该页面

② 如果直接访问登录页,登录后跳转到首页

页面访问限制:路由守卫

访问页面时,进行限制,除了部分不需要登录就可以访问的页面,其他需要登录才可以访问的页面,未登录时访问时,跳转到登录页

在 main.ts 文件中添加全局前置守卫:router.beforeEach

1.找到 “router” 文件夹下的 “index.ts” 文件,在 路由文件中配置路由信息,设置 meta 下的 requiresAuth 字段值,

如果需要登录后才可以查看页面 - - - meta: { requiresAuth: true }

代码示例:
{
      path: '/order',
      name: 'order',
      component: () => import('../views/order/index.vue'),
      meta: {
        title: '我的订单',
        requiresAuth: true,
      }
},

不需要登录就可以查看页面 - - - meta: { requiresAuth: false }

代码示例:
{
      path: '/login',
      name: 'login',
      component: () => import('../views/login/index.vue'),
      meta: {
        title: '登录',
        requiresAuth: false,
      }
},

如图所示:
vue3框架Vite + vue Router + ts 登录后返回上一页或首页

2.在 “main.ts” 文件中引入 router
import router from './router'
3.在 “main.ts” 文件中添加全局守卫设置
代码示例:
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('authToken');
  if(to.meta.requiresAuth) {
    if(token) {
      next();
    } else {
      next({
        path: '/login',
        query: { redirect: to.fullPath } // 记住要访问的页面路由地址,后面登录后跳转会用到该值
      })
    }
  } else {
    next();
  }
})

注意:localStorage.getItem(‘authToken’) 是获取 token 值,如果没有的话就是没登录,如果登陆了,需要登录成功时将 token 值 存到 localStorage,
如果需要设置登录过期时间,需要进行 token 值清空处理,可以放到 cookie 中,或采取其他存储方式

到这里就设置了页面访问限制,如果需要登录后才可以访问的页面,浏览器中输入页面地址会自动跳转到登录页

登录后页面跳转上一页或首页设置:

1.登录页引入 useRoute, useRouter

如果 登录页为 login.vue,则在 login.vue 文件中 引入 路由:

import { useRoute, useRouter } from 'vue-router';
2.获取路由信息,登录成功后返回上一页或跳到首页

获取路由参数 “ route.query.redirect ” 字段信息,如果有 “redirect ” 字段值且不为空,说明是访问其他页面时没登录跳到了登录页,redirect 值记录的是 该页面的地址,登录后再到 “redirect ” 记录的这个地址,就是返回之前要访问的页面
否则,如果没有 “ redirect ”字段信息,或者值为空,登录后就跳到首页

代码示例:
const router = useRouter();
const route = useRoute();
const redirectUrl = route?.query?.redirect;
const redirectUrlStr = ref('')
if(redirectUrl) {
  redirectUrlStr.value = redirectUrl.toString();
}
// 请求接口,登录校验
async function loginCheckFn(mobileVal: string, codeVal: string) {
  const res = await login({ 'mobile': mobileVal, 'code': codeVal }); // 按自己实际登录接口请求写
  console.log(res);
  const { code, reason, result }: any = res;

  if(code == 0) { // 登录成功
    localStorage.setItem('authToken', result.authToken);
    
    // 返回上一页或者首页
    if(redirectUrl) {
      router.push({ path: redirectUrlStr.value })
    } else {
      router.push({ path: '/' });
    }
  } else { // 登录失败
 	  console.log(reason);
  }

更多路由知识可以查看 vue Router 官方文档 ~文章来源地址https://www.toymoban.com/news/detail-442791.html

到了这里,关于vue3框架Vite + vue Router + ts 登录后返回上一页或首页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3 + vite + ts + element-ui搭建后台管理框架

    vue3官网 vue3官网 vite vite官网连接 npm 安装 按照提示输出即可! vite 中使用 less 或 scss 安装后在style 中设置对应的 scss 或 less,推荐scss编译 安装less依赖 安装sass依赖 推荐使用插件,vite.config.js配置; unplugin-vue-components // 自动导入vue中hook reactive ref等AIP; unplugin-auto-import // 自动

    2024年02月15日
    浏览(62)
  • 使用vue3 + TS + Pinia + Vant4 + vite搭建商城H5项目框架

    本文主要将如何利用搭建一个初始化的商城H5项目框架。初始化阶段使用的技术栈有:vue3.2、vue-router、 TS 、 Pinia 、 Vant4、Less、vite                         node -v 检测是否有安装node.js,未安装请先去官网安装node.js         终端输入: npm init vite         自定

    2024年02月12日
    浏览(65)
  • 干货,在uniapp项目中使用uni.navigateBack()方法返回上一页或多页时携带参数的方法!

    在微信官方文档中有这么一个方法:getCurrentPages() getCurrentPages()函数用于获取当前页面栈的实例,以 数组 形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。 注意: getCurrentPages()仅用于展示页面栈的情况,请勿修改页面栈,以免造成页面状态错误 在日常的实

    2024年02月12日
    浏览(56)
  • vite+ts出现红色波浪线;找不到模块“vue-router

    提示:找不到模块“vue-router”。你的意思是要将 \\\"moduleResolution\\\" 选项设置为 \\\"node\\\",还是要将别名添加到 \\\"paths\\\" 选项中?ts(2792) 解决方案一: 查看官方文档:https://www.tslang.cn/docs/handbook/migrating-from-javascript.html 获取声明文件 如果你开始做转换到TypeScript导入,你可能会遇到 Canno

    2024年02月08日
    浏览(52)
  • vue3+ts:安装路由(router)

           1.安装vue-router         vue3需要安装4.0以上版本         vue2最好安装4.0以下版本         安装命令:         安装完成后,在package.json中查看vue-router是否安装成功   src目录下新建一个router文件夹,在router文件夹里新建一个index.ts文件,代码如下: main.ts中代码

    2024年02月06日
    浏览(46)
  • Vue3+vite搭建基础架构(6)--- 使用vue-router

    这里记录下自己在Vue3+vite的项目使用vue-router的过程,不使用ts语法,方便以后直接使用。这里承接自己的博客Vue3+vite搭建基础架构(5)— 使用vue-i18n这篇博客,在该博客项目的基础上增加使用vue-router。 Vue3使用vue-router官方文档:https://router.vuejs.org/zh/installation.html 根据官网给

    2024年02月21日
    浏览(48)
  • vue3 vite ts引入vue文件报错 ts(2307)

    vue3 vite ts 生成的项目模板,在ts文件中引入vue文件报错 ts(2307),只是ts报错,并不影响项目运行。 官方文档有说明:http://vue.dragonlm.com/guide/typescript/overview.html#ide-support 解决方法是安装插件,之后即可正常解析路径,并可以跳转到对应文件。 TypeScript Vue Plugin (Volar)

    2024年02月16日
    浏览(57)
  • Vue3动态路由(Vite+Vue3+TS+Mock)

    Vue通过路由进行页面管理,不同的路由绑定到不同的页面。一般来说,前端直接写好的路由为静态路由,在不修改代码的情况下,路由表是不会改变的。对于不需要动态改变路由表的网站,静态路由就已经足够了,但是当页面需要与权限进行绑定时,不同用户允许浏览的页面

    2024年02月02日
    浏览(122)
  • vue3+vite+ts+elementplus创建项目

    # vue3+vite+ts+pinia 学习笔记 ## 1、创建项目: npm init vite@latest     选择: vue、ts ## 2、进入项目目录后:npm install 安装 ## 3、运行项目: npm run dev ## 4、安装常用插件:     1、安装 npm install vue-router@latest 配置:在src目录下新建router目录,创建index.ts文件代码如下:       ```javascript 创建

    2024年02月09日
    浏览(61)
  • 【Vue3+Ts+Vite】配置滚动条样式

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包