若依+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
繁體地址,請注明出處:http://hk.pswp.cn/web/82478.shtml
英文地址,請注明出處:http://en.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…