联调注意事项清单
1. 网络连通性
| 检查项 | 操作 |
|---|---|
| 端口开放 | 确认 192.168.81.54:8000 可被 192.168.92.16 访问 |
| 防火墙 | 关闭或放行8000端口的入站/出站规则 |
| 网络互通 | ping命令测试 ping 192.168.81.54 |
bash
# 在可视化系统服务器执行
ping 192.168.81.54
telnet 192.168.81.54 8000
2. SSO配置对齐
| Django端配置 | 可视化系统需要保持一致 |
|---|---|
SSO_SHARED_SECRET |
Vue前端使用的密钥字符串 |
SSO_TRUSTED_IPS |
可视化系统的IP 192.168.92.16 |
javascript
// 可视化系统Vue前端 - 必须与Django配置完全一致!
const SSO_SECRET = 'django-insecure-9p0hc4+frflsh3tu0*8gr4-i@k754j61^9#l)4z#p)s3i%qf4-';
3. 用户名获取
javascript
// 可视化系统需要正确获取当前登录用户名
goToDjango() {
// 方式1: 从Cookie获取
const username = this.getCookie('username');
// 方式2: 从Vuex/Store获取
const username = this.$store.state.user.username;
// 方式3: 从LocalStorage获取
const username = localStorage.getItem('username');
// 方式4: 从API获取
axios.get('/api/current-user').then(res => {
window.location.href = `http://192.168.81.54:8000/sso/login/?username=${res.data.username}&sign=${this.generateSign(res.data.username)}`;
});
}
4. 签名算法验证
javascript
// 确保MD5计算正确
function generateSign(username) {
// 方法1: 使用md5库
return md5(SSO_SECRET + username);
// 方法2: 使用在线工具验证
// 输入: django-insecure-9p0hc4+frflsh3tu0*8gr4-i@k754j61^9#l)4z#p)s3i%qf4-admin
// 输出应该是: c17ffac0afd6d09047c21a4ba7c120e5
}
5. Django端调试日志
查看日志确认请求来源:
bash
# 启动Django并观察日志
python manage.py runserver 0.0.0.0:8000
日志中应显示:
SSO登录尝试: username=zhangsan, IP=192.168.92.16
SSO登录成功: zhangsan from 192.168.92.16
6. 常见问题排查
| 问题 | 原因 | 解决方法 |
|---|---|---|
SSO登录来源未授权 |
IP不在白名单 | 检查 SSO_TRUSTED_IPS 配置 |
SSO登录验证失败 |
密钥不一致或签名错误 | 核对两边密钥和算法 |
SSO登录参数不完整 |
URL参数缺失 | 检查username和sign参数 |
| 连接超时 | 端口不通/防火墙拦截 | 检查网络和防火墙 |
| 用户未创建 | 自动创建用户失败 | 检查Django User模型权限 |
7. 快速测试命令
bash
# 在可视化系统服务器上测试(模拟Vue跳转)
curl "http://192.168.81.54:8000/sso/login/?username=admin&sign=c17ffac0afd6d09047c21a4ba7c120e5"
# 预期: HTTP 302 -> 跳转到首页
8. 联调检查清单
- 网络互通(ping/telnet测试)
- Django服务运行在
0.0.0.0:8000 - Vue前端SSO密钥与Django一致
- 用户名正确获取和传递
- MD5签名算法正确实现
- 查看Django日志确认请求到达
- 首次登录自动创建用户成功