4.4 KiB
4.4 KiB
多端登录系统实现总结
项目概述
已成功完成多端登录系统的重构,支持小程序端、H5端和App端的差异化登录方式。
实现功能
1. 多端登录策略
- 小程序端 (MP-WEIXIN): 微信授权登录
- H5端 (H5): 账号密码登录 + 身份证号码登录
- App端 (APP-PLUS): 微信授权登录
2. 新增页面
2.1 H5账号密码登录页面 (pages/login/h5-login.vue)
- 账号密码输入表单
- 登录按钮
- 跳转到身份证号码登录的入口
- 美观的UI设计,渐变背景和圆角卡片
2.2 身份证号码登录页面 (pages/login/id-card-login.vue)
- Loading页面设计,显示"登录中,请稍候..."
- 支持从URL参数获取Base64编码的身份证号码
- 多端Base64解码支持:
- H5:
atob() - 小程序:
uni.base64ToArrayBuffer() - App:
plus.base64.decode()
- H5:
- 调用后端身份证号码登录接口
3. API接口扩展
3.1 身份证号码登录接口 (apiRc/login.js)
export function idCardLogin(data) {
return request({
method: 'post',
url: '/app/idCardLogin',
data,
headers: {
isToken: false
}
})
}
4. 登录帮助工具类 (utils/loginHelper.js)
- 平台类型检测 (
getPlatformType) - 登录页面跳转 (
navigateToLoginPage) - 登录状态检查 (
checkLoginAndNavigate) - URL参数解析 (
parseIdCardLoginParams) - Base64解码 (
decodeIdCardBase64)
5. 现有组件集成
5.1 微信授权登录组件 (components/wxAuthLogin/WxAuthLogin.vue)
- 已修复语法错误
- H5端点击微信授权登录时跳转到H5登录页面
- 小程序端保持原有的微信授权登录逻辑
- App端保持原有的微信授权登录逻辑
5.2 首页组件 (pages/index/components/index-one.vue)
- 已集成登录检查逻辑
- 在
onMounted生命周期中调用checkLoginAndNavigate()
5.3 Tabbar组件 (components/CustomTabBar/CustomTabBar.vue)
- 已集成登录状态判断
- 对于需要登录的页面(发布岗位、我的页面),检查登录状态
- 未登录时跳转到对应登录页面
6. 路由配置 (pages.json)
- 已注册新的登录页面路由
- H5登录页面:
/pages/login/h5-login - 身份证号码登录页面:
/pages/login/id-card-login
登录流程
小程序端登录流程
- 用户点击需要登录的功能
- 显示微信授权登录弹窗
- 用户授权手机号
- 调用后端接口获取token
- 登录成功,跳转到目标页面
H5端登录流程
- 用户点击需要登录的功能
- 跳转到H5登录页面
- 用户可选择:
- 账号密码登录
- 身份证号码登录
- 登录成功,跳转到目标页面
身份证号码登录流程
- 第三方系统跳转到身份证号码登录页面
- 通过URL参数传递Base64编码的身份证号码
- 页面自动解码身份证号码
- 调用后端身份证号码登录接口
- 获取token和用户信息
- 登录成功,跳转到首页
技术特点
1. 条件编译
使用#ifdef、#ifndef实现多端差异化逻辑
2. Base64解码
- H5:
atob(base64Str) - 小程序:
uni.base64ToArrayBuffer(base64Str) - App:
plus.base64.decode(base64Str)
3. 状态管理
使用Pinia store (useUserStore)管理用户状态
4. 错误处理
完善的错误处理和用户提示
测试建议
- 小程序端测试: 验证微信授权登录功能
- H5端测试: 验证账号密码登录和身份证号码登录
- 身份证号码登录测试: 模拟第三方跳转,验证Base64解码和登录流程
- Tabbar导航测试: 验证登录状态判断和页面跳转
文件清单
pages/login/h5-login.vue- H5账号密码登录页面pages/login/id-card-login.vue- 身份证号码登录页面utils/loginHelper.js- 登录帮助工具类apiRc/login.js- 扩展的API接口components/wxAuthLogin/WxAuthLogin.vue- 修复后的微信授权组件pages/index/components/index-one.vue- 集成登录检查的首页组件components/CustomTabBar/CustomTabBar.vue- 集成登录判断的Tabbar组件pages.json- 页面路由配置
注意事项
- 身份证号码登录页面需要第三方系统通过URL参数传递
idCardBase64 - 后端需要实现
/app/idCardLogin接口 - 各端Base64解码方式不同,需要确保兼容性
- 登录成功后需要正确存储用户信息和token
系统已准备就绪,可以开始多端测试。