IP白名单 + 预共享密钥跳转服务

有!可以通过 IP白名单 + 简单密钥 实现,完全不需要改动Java后端。

方案:IP白名单 + 预共享密钥(只需改Vue前端)

原理

复制代码
可视化系统 (192.168.92.16)           Django项目 (192.168.81.54:8000)
┌─────────────────────┐            ┌──────────────────────────┐
│ Vue前端              │            │ 信任此IP的请求           │
│ 直接跳转             │ ────GET──► │ 验证预共享密钥            │
│ /sso/login/?         │            │ 自动登录                 │
│   username=xxx      │            │                          │
│   sign=md5(key+user) │            │ 不验证时间戳和复杂签名   │
└─────────────────────┘            └──────────────────────────┘

Django端修改(简化验证逻辑)

toolName: edit_file_search_replace

status: success

filePath: d:\Files\code\diangoproject\app\views.py

changes: undefined

toolName: edit_file_search_replace

status: success

filePath: d:\Files\code\diangoproject\mysite\settings.py

changes: undefined

测试简化版SSO:

toolName: run_command

status: success

command: D:\software\Anaconda\envs\env_py3.8.10\python.exe -c "import hashlib; secret='django-insecure-9p0hc4+frflsh3tu0*8gr4-i@k754j61^9#l)4z#p)s3i%qf4-'; username='admin'; sign=hashlib.md5((secret+username).encode()).hexdigest(); print(f'username={username}'); print(f'sign={sign}')" undefined

toolName: run_command

status: success

command: Start-Sleep -Seconds 2; url = "http://localhost:8000/sso/login/?username=admin\&sign=c17ffac0afd6d09047c21a4ba7c120e5"; r = Invoke-WebRequest -Uri $url -UseBasicParsing -MaximumRedirection 0; "HTTP ( ( (r.StatusCode) Location: ( ( (r.Headers.Location)" undefined

简化版SSO测试通过! ✅


方案总结:完全不需要改Java后端

只需要在Vue前端加一个跳转按钮

javascript 复制代码
// ========== Vue前端(只需这一处改动)==========

// 定义SSO配置
const SSO_SECRET = 'django-insecure-9p0hc4+frflsh3tu0*8gr4-i@k754j61^9#l)4z#p)s3i%qf4-';

// 生成签名
function generateSign(username) {
    return md5(SSO_SECRET + username);  // MD5(密钥+用户名)
}

// 跳转按钮
goToDjango() {
    const username = this.currentUser;  // 从Vuex或Cookie获取当前用户名
    const sign = this.generateSign(username);
    window.location.href = `http://192.168.81.54:8000/sso/login/?username=${username}&sign=${sign}`;
}

安全机制(IP白名单)

验证项 说明
IP白名单 只允许 192.168.92.16 访问
MD5签名 防止恶意构造请求

Django端配置

配置项 值
SSO_SHARED_SECRET django-insecure-9p0...
SSO_TRUSTED_IPS ['192.168.92.16', '127.0.0.1', 'localhost']

测试结果

复制代码
✅ 正确签名 → HTTP 302 → 跳转首页,登录成功

可视化系统需要做的改动

只需要在Vue前端加一个按钮,Java后端完全不需要改动:

html 复制代码
<!-- 可视化系统任意Vue组件 -->
<el-button @click="goToDjango">进入Django系统</el-button>
javascript 复制代码
// 对应的方法
goToDjango() {
    const username = this.user.username;  // 从当前会话获取
    const sign = this.generateSign(username);
    window.location.href = `http://192.168.81.54:8000/sso/login/?username=${username}&sign=${sign}`;
},
generateSign(username) {
    // MD5实现可以用 md5.js 库
    return md5('django-insecure-9p0hc4+frflsh3tu0*8gr4-i@k754j61^9#l)4z#p)s3i%qf4-' + username);
}
相关推荐
FYKJ_201011 小时前
springboot同人周边订单管理系统48955-计算机毕业设计、课程设计
java·javascript·vue.js·spring boot·django·php·课程设计
yuyuxun11 天前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
treasure1402 天前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
实名上网宋凯宣12 天前
Django
后端·python·django
汤米粥12 天前
cmd手动创建的Django项目怎么用社区版Pycharm运行起来
python·pycharm·django
Rambo.Fan13 天前
02 · 重建与修复手册(新服务器 playbook)
运维·服务器·django
雨晨源码(同名B站)13 天前
深度学习毕业设计选题推荐:基于YOLO11的交通标志检测系统设计与实现(Python+Django+Vue3+对接deepseek)
人工智能·python·深度学习·机器学习·django·课程设计
言乐615 天前
通过 3D 动画直观演示球形瓶内可滑动半圆机构在倾倒时防粘盖、回正时刮膏体的运动学过程
python·3d·django·virtualenv·pygame
小蒜学长15 天前
基于Django+Vue喵汪联盟宠物领养系统的设计与实现(代码+数据库+LW)
后端·python·django·宠物领养系统·流程规范化
小咕聊编程16 天前
教育大数据可视化系统
python·django·flask