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);
}
相关推荐
Wonderful U8 小时前
AI智能日志异常检测告警平台:告别人工排查,秒级定位线上故障
数据库·人工智能·python·django
Wonderful U9 小时前
Django+Python后端实战|AI智能图像去水印系统:基于OpenCV+大模型实现无损图片水印消除
人工智能·python·django
python在学ing1 天前
Django框架学习笔记:从零基础到项目实战
数据库·python·django·sqlite
Wonderful U1 天前
Python+Django打造AI赋能企业级项目管理平台
人工智能·python·django
火星技术1 天前
电影台词搜索引擎开源源码
搜索引擎·django·开源
IT策士2 天前
Django 从 0 到 1 打造完整电商平台:系列总结 + 项目演示与后续扩展
后端·python·django
俊哥工具2 天前
无广告免费壁纸工具,手机电脑壁纸随心更换
python·智能手机·django·计算机外设·virtualenv·pygame
小熊Coding2 天前
Python二手图书市场行为分析系统
开发语言·爬虫·python·django·计算机毕业设计·数据可视化分析·二手图书分析系统
码界筑梦坊2 天前
150-基于Python的中国海洋水质数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
JavaWeb学起来3 天前
Django学习教程(一)Django介绍和环境准备
django·python web·web框架·django教程