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);
}
相关推荐
万事大吉CC8 小时前
【6】深入剖析 Django 之 MTV:数据渲染、请求处理与类视图
python·django·sqlite
Mr数据杨8 小时前
【Codex】用题库审核中心规范试题质量审核流程
django·codex·项目开发
Mr数据杨9 小时前
【Codex】搭建教学中心数据工作台统筹教案与课件资源
java·开发语言·django·codex·项目开发
Mr数据杨10 小时前
【Codex】用考试安排模块管理考试计划与考务流程
django·codex·项目开发
Mr数据杨10 小时前
【Codex】用历史试卷模块沉淀考试资料与复用题卷
django·codex·项目开发
Mr数据杨19 小时前
【Codex】用Tauri用户配置打通桌面端个性化设置
django·codex·项目开发
Mr数据杨1 天前
【Codex】用整合教案模块串联PPT文案与课堂教学方案
django·powerpoint·codex·项目开发
Mr数据杨1 天前
【Codex】用教案主体模块沉淀标准化教学设计内容
java·开发语言·django·codex·项目开发
计算机毕业编程指导师1 天前
【计算机毕设】基于Hadoop的共享单车订单数据分析系统+Python+Django全栈开发 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·数据挖掘·spark·django