Vue项目中实现用户登录后跳回原地址
本地存储
在 Vue 3 中,你可以使用 Vue Router 和 sessionStorage 或 localStorage 来实现用户登录后跳回原来的页面。以下是一种常见的实现方式:
- 在用户登录之前,记录当前页面的路由路径:
- 在需要登录的页面组件中,在用户点击登录前,使用
this.$route.path 获取当前页面的路由路径,并将其存储在 sessionStorage 或 localStorage 中(选择其中一个根据你的需求)。
// 在需要登录的页面组件中methods: {login() {sessionStorage.setItem('redirectPath', this.$route.path);// 执行用户登录操作}}
- 在用户登录成功后,跳转回原来的页面:
- 在登录成功后的处理逻辑中,从 sessionStorage 或 localStorage 中获取之前存储的路由路径。
- 利用 Vue Router 的
router.push() 方法将用户重定向到之前的页面。
// 在登录成功后的处理逻辑中const redirectPath = sessionStorage.getItem('redirectPath');if (redirectPath) {sessionStorage.removeItem('redirectPath');router.push(redirectPath);} else {// 如果没有之前的路由路径,跳转到默认页面router.push('/');}
通过上述步骤,你可以实现用户登录完成后跳回原来的页面。
需要注意的是,sessionStorage 仅在当前会话期间有效,而 localStorage 在关闭浏览器后依然有效。根据你的需求选择适合的存储方式。
Store方式
除了使用 sessionStorage 或 localStorage 以外,你还可以使用 Vue Router 的路由导航守卫(Navigation Guards)来实现用户登录后跳回原来的页面。以下是一种使用路由导航守卫的方式:
- 创建一个全局的路由导航守卫:
- 在你的路由配置文件中,创建一个全局的
beforeEach 导航守卫。 - 在导航守卫中,检查用户是否已经登录。如果用户未登录,则将当前路由路径存储在 Vuex 状态管理中(或者其他全局状态管理方式)。
// 路由配置文件中import store from './store';router.beforeEach((to, from, next) => {const isAuthenticated = store.getters.isAuthenticated;if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {store.commit('setRedirectPath', to.fullPath);next('/login');} else {next();}});
- 在用户登录成功后,获取存储的重定向路径并跳转:
- 在用户登录成功的处理逻辑中,从 Vuex 状态管理中获取之前存储的重定向路径。
- 利用 Vue Router 的
router.push() 方法将用户重定向到之前的页面。
// 在登录成功后的处理逻辑中const redirectPath = store.state.redirectPath;if (redirectPath) {store.commit('clearRedirectPath');router.push(redirectPath);} else {// 如果没有之前的重定向路径,跳转到默认页面router.push('/');}
- 在 Vuex 状态管理中存储重定向路径:
- 创建一个名为 redirectPath 的状态,并提供相应的 mutation 和 action 来设置和清除该状态。
// Vuex 状态管理中const state = {redirectPath: ''};const mutations = {setRedirectPath(state, path) {state.redirectPath = path;},clearRedirectPath(state) {state.redirectPath = '';}};const actions = {setRedirectPath({ commit }, path) {commit('setRedirectPath', path);},clearRedirectPath({ commit }) {commit('clearRedirectPath');}};
通过上述方式,你可以使用路由导航守卫和全局状态管理来实现用户登录完成后跳回原来的页面。
URL地址栏方式
还有一种方式是使用 URL 参数来传递重定向路径。以下是使用 URL 参数的实现方式:
- 在用户登录之前,将当前页面的路由路径作为参数附加到登录链接上:
- 在需要登录的页面组件中,获取当前页面的路由路径,并将其作为参数附加到登录链接上。
// 在需要登录的页面组件中methods: {login() {const redirectPath = this.$route.path;// 将 redirectPath 作为参数附加到登录链接上window.location.href = `/login?redirect=${encodeURIComponent(redirectPath)}`;}}
- 在用户登录成功后,从 URL 参数中获取重定向路径并跳转:
- 在登录成功后的处理逻辑中,从 URL 参数中获取之前附加的重定向路径。
- 利用 Vue Router 的
router.push() 方法将用户重定向到之前的页面。
// 在登录成功后的处理逻辑中const urlParams = new URLSearchParams(window.location.search);const redirectPath = urlParams.get('redirect');if (redirectPath) {// 将重定向路径解码后再进行跳转router.push(decodeURIComponent(redirectPath));} else {// 如果没有之前的重定向路径,跳转到默认页面router.push('/');}
通过使用 URL 参数来传递重定向路径,你可以实现用户登录完成后跳回原来的页面。
需要注意的是,这种方式需要在后端进行对登录链接的处理,以获取和解析 URL 参数。同时,为了安全考虑,你可能需要对重定向的 URL 参数进行验证和过滤,以防止恶意操作。
相关文章:
Vue项目中实现用户登录后跳回原地址
本地存储 在 Vue 3 中,你可以使用 Vue Router 和 sessionStorage 或 localStorage 来实现用户登录后跳回原来的页面。以下是一种常见的实现方式: 在用户登录之前,记录当前页面的路由路径: 在需要登录的页面组件中,在…...
【Google Chrome Windows 64 version及 WebDriver 版本】
最近升级到最新版本Chrome后发现页面居然显示错乱实在无语, 打算退回原来的版本, 又发现官方只提供最新的版本下载, 为了解决这个问题所有收集了Chrome历史版本的下载地址分享给大家. Google Chrome Windows version 64 位 VersionSize下载地址Date104.0.5112.10282.76 MBhtt…...
[ffmpeg] 音视频编码
本文主要梳理 ffmpeg 中音视频编码的常用函数 API调用 常用 API const AVCodec *avcodec_find_encoder(enum AVCodecID id); AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); void avcodec_free_context(AVCodecContext **avctx); int avcodec_open2(AVCode…...
springboot+redis+缓存
整合 添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 连接redis,配置yml文件 主机 端口号 数据库是哪一个 密码 配置类 p…...
关于http的206状态码和416状态码的意义、断点续传以及CORS使用Access-Control-Allow-Origin来允许跨域请求
一、关于http的206状态码和416状态码的意义及断点续传 HTTP 2xx范围内的状态码表明客户端发送的请求已经被服务器接受并且被成功处理了,HTTP/1.1 206状态码表示客户端通过发送范围请求头Range抓取到了资源的部分数据,一般用来解决大文件下载问题,一般CDN…...
SOMEIP_ETS_114: SD_Entries_Length_wrong_combined
测试目的: 验证DUT能够拒绝一个包含两个正确条目但条目数组长度不正确的SubscribeEventgroup消息,并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议,当接收到一个条目数组长度与实际条目数量不匹配的Sub…...
SQL:DATEDIFF函数
DATEDIFF函数是用于计算两个日期之间的时间间隔的函数,它在不同的编程语言和数据库系统中都有广泛的应用。以下是对DATEDIFF函数的详细解析: 一、函数用途 DATEDIFF函数的主要用途是计算两个日期之间的时间间隔,这个间隔可以是年、季度、月…...
MATLAB 可视化基础:绘图命令与应用
目录 1. 绘制子图1.1基本绘图命令1.2. 使用 subplot 函数1.3. 绘图类型 2.MATLAB 可视化进阶(以下代码均居于以上代码的数据定义上实现)2.1. 极坐标图2.3. 隐函数的绘制 3.总结 在数据分析和科学计算中,数据可视化是理解和解释结果的关键工具。今天,我将…...
掌握 Python 异常处理的实战技巧:从基础到高级应用20240918
掌握 Python 异常处理的实战技巧:从基础到高级应用 引言 在 Python 编程中,异常处理是保障代码稳健性和可靠性的关键要素之一。无论是在网络请求、资源访问,还是复杂的业务逻辑中,异常处理都不可或缺。本文将从 Python 异常的基…...
One API 部署与配置指南
技术文档:One API 部署与配置指南 概述 One API 是一个多功能的 API 管理平台,支持自定义设置、用户管理、多种登录注册方式、主题切换等。本文档提供了详细的部署和配置指南,帮助用户快速搭建和使用 One API。 部署 基于 Docker 部署 D…...
国密起步7:BouncyCastle使用SM4自定义格式加解密C#版
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 github源码指引的指引-CSDN博…...
Qt优秀开源项目之二十三:QSimpleUpdater
QSimpleUpdater是开源的自动升级模块,用于检测、下载和安装更新。 github地址:https://github.com/alex-spataru/QSimpleUpdater QSimpleUpdater目前Star不多(911个),但已在很多开源项目看到其身影,比如Not…...
使用 Nmap 进行 SSL/TLS 加密套件枚举
1. Nmap 简介 Nmap(Network Mapper)是一个开源的网络探测和安全审计工具。它广泛用于扫描网络并发现设备、端口及服务,同时也支持多种脚本来进行更高级的安全扫描。Nmap 的 -sV 参数可以用于探测开放端口上的服务及版本信息,配合…...
探索 Python 的火焰:Fire 库的神秘力量
文章目录 🔥 探索 Python 的火焰:Fire 库的神秘力量第一部分:背景介绍第二部分:Fire 库是什么?第三部分:如何安装 Fire?第四部分:简单库函数使用方法第五部分:场景应用第…...
【Day14-单例设计模式动态代理】
单例设计模式 什么是设计模式(Design pattern) ? 一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。设计模式有20多种,对应20多种软件开发中会遇到的问题…...
代码随想录训练营Day7 | 454.四数相加II | 383. 赎金信 | 15. 三数之和 | 18. 四数之和
代码随想录 (programmercarl.com) Leetcode 454. 四数相加 II 题目描述 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N&#…...
C++和OpenGL实现3D游戏编程【目录】
欢迎来到zhooyu的专栏。 个人主页:【zhooyu】 文章专栏:【OpenGL实现3D游戏编程】 贝塞尔曲面演示: 贝塞尔曲面演示zhooyu 本专栏内容: 我们从游戏的角度出发,用C去了解一下游戏中的功能都是怎么实现的。这一切还是要…...
03-Mac系统PyCharm主题设置
目录 1. 打开PyCharm窗口 2. Mac左上角点击PyCharm,点击Settings 3. 点击第一项Appearance& Behavior 4. 点击Appearance 5. 找到Theme进行设置 1. 打开PyCharm窗口 2. Mac左上角点击PyCharm,点击Settings 3. 点击第一项Appearance& Behavi…...
Java并发的四大定律
每一个进入 Java 并发世界的人,都会不可避免地面临一系列问题:线程安全、并发控制、锁,以及共享资源。这些概念复杂又抽象,往往让人无从下手。幸运的是,业界早已总结出一些法则,这些法则为我们处理并发问题…...
java项目之基于springboot的贸易行业crm系统(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于springboot的贸易行业crm系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于sp…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
