Files
h5-meike/common/auth.js
xuchaoandClaude Opus 4.8 ded90fd423 fix: 开发模式运行直接进门票列表,不再弹登录页
问题:全新运行(无登录态)时,列表页的登录门槛会把人弹到登录页,
本地开发每次都要手动输手机号,体验差。
改法:requireLogin 在开发模式下无登录态时静默用首个测试手机号假登录,
直接进业务页,不跳登录页;正式流程不变(公众号入口已透明登录,
登录页仅在外链冷启动等无身份场景出现)。
顺手修掉 redirect 参数的双重编码(URL 里难看的 %252F)。
已实测:清空登录态直接打开列表页,URL 停留在 scenic,列表正常渲染。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:14:04 +08:00

68 lines
2.2 KiB
JavaScript

// xuchao: 登录层 —— 登录逻辑全部隔离在这里
// 一期为假登录(开发模式),后端微信登录接口就绪后只改本文件:
// - loginByMock 开发模式:输入测试手机号直接登录
// - loginByWechat 正式流程:用微信网页授权凭证(code)换用户信息
// - bindPhoneBySms 正式流程:短信验证码绑定手机号(微信授权拿不到手机号时用)
import config from '@/common/config.js'
// 是否已登录(本地缓存里有手机号即视为已登录)
const isLogin = () => {
return !!uni.getStorageSync('phone')
}
// xuchao: 登录校验
// - 开发模式:无登录态时静默用首个测试手机号假登录,不跳登录页(本地直接进业务页)
// - 正式流程:跳登录页;登录成功后回跳 redirect 指定的页面
const requireLogin = (redirect) => {
if (isLogin()) return true
if (config.devMode) {
loginByMock(config.testPhones[0])
return true
}
uni.navigateTo({
url: '/pages/index/authorization' + (redirect ? '?redirect=' + redirect : '')
})
return false
}
// xuchao: 开发模式假登录 —— 写入与真实登录相同的缓存数据,后续页面逻辑完全一致
const loginByMock = (phone) => {
uni.setStorageSync('phone', phone)
uni.setStorageSync('openId', 'mock_openid_' + phone)
uni.setStorageSync('userId', '')
}
// xuchao: 正式流程占位 —— 后端接口就绪后实现(用 code 换 openId + 用户信息)
const loginByWechat = (code) => {
return new Promise((resolve, reject) => {
// TODO 后端就绪后替换为:POST /auth/oauth2session {code} → {openId, mobile, token}
reject(new Error('微信登录接口未接入'))
})
}
// xuchao: 正式流程占位 —— 短信验证码绑定手机号
const bindPhoneBySms = (phone, smsCode) => {
return new Promise((resolve, reject) => {
// TODO 后端就绪后替换为:短信验证码校验 + 手机号绑定 openId
reject(new Error('短信绑定接口未接入'))
})
}
// 退出登录
const logout = () => {
uni.removeStorageSync('phone')
uni.removeStorageSync('openId')
uni.removeStorageSync('userId')
uni.removeStorageSync('token')
}
export default {
isLogin,
requireLogin,
loginByMock,
loginByWechat,
bindPhoneBySms,
logout,
devMode: config.devMode
}