更新记录
1.0.0(2026-09-17) 下载此版本
- 首个版本:封装自本项目
src/composables/auth-gate.ts(其前身是 uni1 的shared/auth-gate)。 - 四个守卫:
requireLogin(操作级登录)、requireLoginPage(页面级登录,登录成功返回当前页)、requireVersionPage(页面级版本,透传 wc-version)、requireVersionLoginPage(版本+登录组合)。 - 宿主接线:
setupWcAuthGate({ loginEntry, fallbackTabUrl })注入登录进入策略与兜底 tab 路由, 登录态判定走 wc-auth、版本判定走 wc-version,插件自身不感知项目路由。
平台兼容性
uni-app(5.24)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | - | - | - | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.24)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
wc-auth-gate
页面前置守卫统一入口:登录(操作级 / 页面级)+ 版本(页面级)+ 组合守卫。
封装自 uni1 的 shared/auth-gate,登录态判定走 [wc-auth]、版本判定走 [wc-version]。
安装前置
- 已安装
wc-auth(登录态)与wc-version(版本灰度,含 404 页) - 宿主在
main.ts调用一次setupWcAuthGate()(见下)
宿主接线(main.ts)
插件不感知项目路由与登录 UX,「怎么进入登录」由宿主注入:
import { useLoginEntry } from "@/composables/useLoginEntry";
import { setupWcAuthGate } from "@/uni_modules/wc-auth-gate/commons/config";
// 登录进入策略复用项目 composable(小程序跳登录页 / H5 整页授权 + 协议确认)
const { startLogin } = useLoginEntry();
setupWcAuthGate({
loginEntry: () => void startLogin(),
fallbackTabUrl: "/pages/mine/index", // 缺省即此值;守卫取消且页面栈为空时的兜底 tab
});
未注入
loginEntry时缺省跳/pages/login/index(望潮系小程序约定);带 H5 授权等特殊策略的项目务必覆盖。
守卫一览
| 守卫 | 维度 | 级别 | 未通过行为 | 用法 |
|---|---|---|---|---|
requireLogin(action, name?) |
登录 | 操作级 | 弹「去登录」,取消留在当前页 | requireLogin(() => 提交(), '提交订单') |
requireLoginPage(name?) |
登录 | 页面级 | 弹「去登录」,取消返回上一页 | onLoad(() => { if (!requireLoginPage('订单')) return }) |
requireVersionPage() |
版本 | 页面级 | 静默 redirectTo 404 | onLoad(() => { if (!requireVersionPage()) return }) |
requireVersionLoginPage(name?) |
版本+登录 | 页面级 | 版本未放行 → 404;未登录 → 弹「去登录」 | onLoad(() => { if (!requireVersionLoginPage('竞猜')) return }) |
组合守卫判定顺序:版本在前(功能整体收回时连页面都不该出现,静默无交互), 登录在后(功能内的身份要求,交互式引导)。
「登录成功返回当前页」的配套用法
小程序端登录页成功后 navigateBack 回本页,初始化统一放 onShow 接续:
import { requireLoginPage } from '@/uni_modules/wc-auth-gate/commons'
import { useAuthStore } from '@/uni_modules/wc-auth/commons'
const authStore = useAuthStore()
const initialized = ref(false)
onLoad(() => {
if (!requireLoginPage('编辑资料')) return // 未登录弹引导,modal 只弹这一次
})
onShow(() => {
// 首次进入(已登录)或登录页返回后自动接续
if (authStore.isLoggedIn && !initialized.value) {
initialized.value = true
void loadProfile()
}
})
H5 端整页授权回跳后页面重载,onLoad 重新走守卫(已登录直通),同一套代码两端通用。
行为约定
| 项 | 说明 |
|---|---|
| 登录态判定 | wc-auth 的 useAuthStore().isLoggedIn(token 有效且未过期) |
| 版本判定 | wc-version 的 versionReleased(线上 siteConfig.version > 本地 VITE_VERSION) |
| 进入登录 | 宿主注入的 loginEntry(缺省 navigateTo /pages/login/index) |
| 取消兜底 | 页面栈 >1 时 navigateBack;栈底 switchTab fallbackTabUrl |
| 弹窗文案 | 「{页面名/动作名}需要先登录」,确认键「去登录」 |
范围说明
刻意不包含(保持简单):
- 角色类守卫(运营者 / 管理员等,各项目身份字段不同,需要时参照组合守卫自行叠加)
- 异步守卫(如"登录且资料完整"需拉接口的场景,由页面在 onShow 接续逻辑里处理)

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 5
赞赏 0
下载 12618064
赞赏 1949
赞赏
京公网安备:11010802035340号