若依+vue2实现模拟登录

1、背景

第三方通过链接访问若依项目,该链接通过携带唯一标识符:phone(手机号),项目通过手机号查询本项目数据库人员信息实现模拟登录。

2、实现

2.1. 前端实现

2.1.1 创建专用模拟登录页面PhoneLogin.vue

<template><div class="phone-login-container"><div v-if="loading">正在登录中...</div><div v-if="error" class="error-message">{{ error }}</div></div>
</template><script>
import { simulateLogin } from '@/api/login'
import { removeToken, setToken } from '@/utils/auth'export default {name: 'PhoneLogin',data() {return {loading: true,error: ''}},created() {this.handlePhoneLogin()},methods: {async handlePhoneLogin() {// 先清除旧账号的所有信息await this.$store.dispatch('LogOut')removeToken()const phone = this.$route.query.phoneif (!phone) {this.error = '请提供手机号参数'this.loading = falsereturn}try {// 发起模拟登录请求const response = await simulateLogin(phone)const  token  = response.data.tokenif (!token) {throw new Error('未能获取有效token')}// 存储新tokensetToken(token)// 获取新用户信息await this.$store.dispatch('GetInfo')// 清除可能的路由缓存this.$router.app.$options.router.matcher = this.$router.app.$options.router.matcher// 跳转到首页this.$router.push({ path: '/' })} catch (error) {console.error('手机号登录失败:', error)this.error = '登录失败: ' + (error.message || '未知错误')this.loading = false}}}
}
</script>

2.1.2 添加模拟登录API

 在 api/login.js 中添加:

// 模拟登录API
export function simulateLogin(phone) {return request({url: '/auth/simulate-login?phone'+phone,method: 'get'});
}

2.1.3 添加白名单

src/permission.js中添加:

const whiteList = ['/login', '/register',"/phoneLogin"]

2.1.4 添加路由

在router/index.js中添加跳转路由

{path: '/phoneLogin',component: () => import('@/views/stationRule/phoneLogin'),hidden: true,meta: {title: '手机号登录',noAuth: true // 关键!设置为不需要认证}},

2.1.5 修改全局权限控制

在 src/permission.js 中确保允许访问该路由:

router.beforeEach(async (to, from, next) => {// 获取tokenconst hasToken = getToken()// 如果是phoneLogin路由,直接放行if (to.path === '/phoneLogin') {next()return}// ...原有其他逻辑
}

2.2后端实现 

2.2.1在 ruoyi-admin 模块中创建控制器SimulateAuthController

@RestController
@RequestMapping("/auth")
public class SimulateAuthController extends BaseController {@Autowiredprivate ISimulateLoginService simulateLoginService;@Autowiredprivate TokenService tokenService;@GetMapping("/simulate-login")public AjaxResult simulateLogin(@RequestParam("phone") String phone, HttpServletRequest request) {if (StringUtils.isEmpty(phone)) {return AjaxResult.error("手机号不能为空");}// 使旧token失效String oldToken = tokenService.getToken(request);if (StringUtils.isNotEmpty(oldToken)) {tokenService.delLoginUser(oldToken);}return simulateLoginService.simulateLoginByPhone(phone);}
}

2.2.1创建服务接口和实现 

public interface ISimulateLoginService {AjaxResult simulateLoginByPhone(String phone);
}@Service
public class SimulateLoginServiceImpl implements ISimulateLoginService {@Autowiredprivate TokenService tokenService;@Overridepublic AjaxResult simulateLoginByPhone(String phone) {// 根据user数据库查询用户,在UserMapper中添加查询方法SysUser user = sysUserMapper.selectUserByPhone(phone);if (user == null) {return AjaxResult.error("用户不存在");}// 创建tokenLoginUser loginUser = new LoginUser();loginUser.setUser(user);loginUser.setPermissions(permissionService.getMenuPermission(user));loginUser.setRoles(roleService.selectRoleKeys(user.getUserId()));String token = tokenService.createToken(loginUser);// 返回token和用户信息Map<String, Object> result = new HashMap<>();result.put("token", token);result.put("user", user);return AjaxResult.success(result);}
}

3. 安全配置

3.1 添加白名单

在 SecurityConfig.java 中添加模拟登录接口到白名单:

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {httpSecurity// ...其他配置.authorizeRequests()// 放行模拟登录接口.antMatchers("/auth/simulate-login").anonymous()// ...其他放行配置
}

4.访问 

直接访问 http://localhost:8080?phone=13800138000

成功跳转并可以访问其他链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2025】使用docker compose一键部署项目到服务器(4)

目录&#x1f4bb; 前言一、部署准备二、本地idea配置docker和docker compose执行器三、编写docker-compose.yml文件四、执行启动 前言 该篇文章主要是使用idea通过docker-compose.yml构建容器集合并且进行统一管理更新 该专栏主要为介绍通过docker compose实现容器编排部署 &…

Linux Windows之wsl安装使用简介

参考资料 如何使用 WSL 在 Windows 上安装 Linuxwindows11 安装WSL2全流程旧版 WSL 的手动安装步骤 目录 一. 前期准备1.1 确认windows的版本1.2 开启Linux子系统的支持1.2.1 图形化方式1.2.2 命令行方式 1.3 安装wsl软件1.4 安装Linux分发版 二. 基本配置2.1 Windows Termina…

matlab模糊控制实现路径规划

路径规划是机器人和自动驾驶系统中的重要问题之一&#xff0c;它涉及确定如何在给定环境中找到最优路径以达到特定目标。模糊控制是一种有效的控制方法&#xff0c;可以应用于路径规划问题。 路径规划算法的目标是在避免障碍物的情况下&#xff0c;找到机器人或车辆从起点到终…

OpenHarmony 5.0横竖屏界面适配

目录 一.背景 二.修改位置 三.参考文档 一.背景 由于需要一套代码适配横屏和竖屏设备,所以有些数值的大小可能在竖屏上面适配,在横屏上面不那么适配了,所以需要横屏特殊的数值大小(例如:宽高) 二.修改位置 在resources资源文件中新建横屏适配的文件夹,然后新建自己需…

AlphaFold3服务器安装与使用(非docker)(1)

1. 服务器显卡驱动准备 这部分我会详细记录一下我踩过的坑及怎样拯救的&#xff0c;原谅啰嗦啦 ^_^ 1.1 服务器旧配置 1.1.1 nvidia-smi [xxxxxxlocalhost ~]# nvidia-smi Thu May 29 20:54:00 2025 -------------------------------------------------------------…

Java异步编程难题拆解技术

目录 ​编辑 异步编程的核心概念 Java异步编程的主要实现方式 异步编程的常见难题 解决异步编程难题的策略 性能优化与调试技巧 实际案例分析 未来发展趋势 异步编程的核心概念 同步与异步的区别阻塞与非阻塞的差异Java异步编程的常见场景&#xff08;如网络请求、文件…

第五期书生大模型实战营-《L1G1-玩转书生大模型 API 之 Browser-Use 实践》

一、 搭建环境 pip install requests openai 1.2、获取API https://internlm.intern-ai.org.cn/api/tokens 1.3 运行API from openai import OpenAI from dotenv import load_dotenv import osfrom openai import OpenAI from dotenv import load_dotenv import os# Inter…

基于Web的安全漏洞分析与修复平台设计与实现

基于Web的安全漏洞分析与修复平台设计与实现 摘要 随着信息化进程的加快&#xff0c;Web系统和企业IT架构愈发复杂&#xff0c;安全漏洞频发已成为影响系统安全运行的主要因素。为解决传统漏洞扫描工具定位不准确、修复建议不完善、响应周期长等问题&#xff0c;本文设计并实…

深入解析异步爬虫中的协程原理:从概念到工程实践

引言 在Web数据抓取领域,同步爬虫的​​单线程阻塞模型​​已无法满足现代应用对效率的需求。据统计,2025年全球Top 1000网站中,89%采用Ajax动态加载技术,传统爬虫的平均抓取效率已下降至每秒1.5个页面。而基于协程的异步爬虫通过​​非阻塞I/O​​和​​并发调度​​,可…

告别硬编码!用工厂模式优雅构建可扩展的 Spring Boot 应用 [特殊字符]

嗨&#xff0c;各位技术伙伴们&#xff01;&#x1f44b; 在日常的软件开发中&#xff0c;我们经常面临需求变更的挑战。如何构建一个既能满足当前需求&#xff0c;又能轻松应对未来变化的系统呢&#xff1f;答案往往藏在那些经典的设计模式中。 今天&#xff0c;我们就来聊聊…

【Linux】编译器gcc/g++及其库的详细介绍

前言&#xff1a; 上文我们学到了&#xff0c;LInux中的的编辑器vim【Linux】vim编辑器-CSDN博客 本文来学习LInux中的编译器&#xff1a;gcc/g gcc是C语言编译器&#xff0c;g是C编译器&#xff0c;这两个的使用一模一样。这里我们主要使用gcc给大家介绍 1.格式 gcc 被编译的…

用“红烧鱼”类比说明卷积神经网络CNN的概念

我们用一个生活中的例子——「厨房做红烧鱼」 的场景&#xff0c;来类比卷积神经网络中多层卷积核的工作过程。你会发现&#xff0c;卷积层就像厨房里分工明确的厨师团队&#xff0c;逐步处理食材&#xff0c;最终完成一道复杂的菜品。 &#x1f41f; 生活案例&#xff1a;厨房…

uniapp与微信小程序开发平台联调无法打开IDE

经测试属于网络问题。本机需要联网。否则会出现Hbuilder运行微信小程序到模拟器时无法打开 微信开发者工具 这个页面出不来会一直显示异常。这期间微信小程序开发工具的端口是通的 需要先联网

内网穿透之Linux版客户端安装(神卓互联)

选择Linux系统版本 获取安装包 &#xff1a;https://www.shenzhuohl.com/download.html 这里以Ubuntu 18.04为例&#xff0c;其它版本方法类似 登录Ubuntu操作系统&#xff1a; 打开Ubuntu系统终端&#xff0c;更新版本 apt-get update 安装运行环境&#xff1a; 安装C 运…

硬件学习笔记--66 MCU的DMA简介

DMA&#xff08;Direct Memory Access&#xff0c;直接存储器访问&#xff09;是MCU中一种重要的数据传输机制&#xff0c;它允许外设与存储器之间或存储器与存储器之间直接传输数据&#xff0c;而无需CPU的持续干预。 1、DMA的基本原理 1.1 核心概念&#xff1a; 1&#xf…

DeepSeek本地部署及WebUI可视化教程

前言 DeepSeek是近年来备受关注的大模型之一,支持多种推理和微调场景。很多开发者希望在本地部署DeepSeek模型,并通过WebUI进行可视化交互。本文将详细介绍如何在本地环境下部署DeepSeek,并实现WebUI可视化,包括Ollama和CherryStudio的使用方法。 一、环境准备 1. 硬件要…

RK3588和FPGA桥片之间IO电平信号概率性不能通信原因

1.GPIO管脚配置问题 RK3588对IO进行配置的时候&#xff0c;如果配置为多功能复用&#xff0c;没有明确IO功能&#xff0c;可能引起信号接收不稳定&#xff0c; 需要在驱动中设备树中配置管脚为GPIO功能&#xff0c;确保没有功能复用的干扰。 2.上下拉电阻阻值设置不当 GPIO引脚…

相机--相机标定实操

教程 camera_calibration移动画面示例 usb_cam使用介绍和下载 我使用的是USB相机&#xff0c;所以直接使用ros的usb_cam功能包驱动相机闭关获取实时图像&#xff0c;然后用ros的camera_calibration标定相机。 查询摄像机的信息 v4l2-ctl -d 0 --all的作用 命令详解&#xf…

【Kotlin】高阶函数Lambda内联函数

【Kotlin】简介&变量&类&接口 【Kotlin】数字&字符串&数组&集合 【Kotlin】高阶函数&Lambda&内联函数 【Kotlin】表达式&关键字 文章目录 函数还是属性高阶函数抽象和高阶函数实例&#xff1a; 函数作为参数的需求方法引用表达式更多使用场…

飞算JavaAI 炫技赛重磅回归!用智能编码攻克老项目重构难题

深夜还在排查十年前Hibernate框架埋下的N1查询隐患&#xff1f;跨语言迁移时发现SpringMVC控制器里的业务逻辑像一团乱麻&#xff1f;当企业数字化进入深水区&#xff0c;百万行代码的老系统就像一座随时可能崩塌的"技术债冰山"。近日&#xff0c;飞算科技发布JavaAI…