hookehuyr

fix(router): 优化微信授权流程和URL处理

移除restoreHashAfterOAuth调用,简化微信授权URL处理逻辑
统一使用完整URL进行微信授权和JSSDK配置
<!--
* @Date: 2025-03-20 19:53:12
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-12-09 16:43:21
* @LastEditTime: 2025-12-10 11:51:27
* @FilePath: /mlaj/src/App.vue
* @Description: 入口文件
-->
......@@ -33,23 +33,20 @@ provideCart('single'); // 提供全局购物车状态,单一商品模式
* @returns {void}
*/
const initWxConfig = async () => {
// 使用不带 hash 的完整 URL 参与签名,规避重复刷新问题
const sign_url = encodeURIComponent(window.location.href.split('#')[0]);
try {
const wxJs = await wxJsAPI({ url: sign_url });
wxJs.data.jsApiList = apiList;
wx.config(wxJs.data);
wx.ready(() => {
// 微信 JSSDK 初始化完成,展示所有非基础菜单项
wx.showAllNonBaseMenuItem();
});
wx.error((err) => {
// 微信 JSSDK 初始化失败日志
console.warn('微信配置初始化失败:', err);
});
} catch (error) {
console.error('初始化微信配置失败:', error);
}
const raw_url = encodeURIComponent(location.pathname + location.hash);
try {
const wxJs = await wxJsAPI({ url: raw_url })
wxJs.data.jsApiList = apiList
wx.config(wxJs.data)
wx.ready(() => {
wx.showAllNonBaseMenuItem()
})
wx.error((err) => {
console.warn('微信配置初始化失败:', err)
})
} catch (error) {
console.error('初始化微信配置失败:', error)
}
}
// 在非开发环境下初始化微信配置
......@@ -92,7 +89,8 @@ onUnmounted(() => {
<div v-if="Component">
<component :is="Component" />
</div>
<div v-else class="flex items-center justify-center h-screen bg-gradient-to-br from-green-50 via-teal-50 to-blue-50">
<div v-else
class="flex items-center justify-center h-screen bg-gradient-to-br from-green-50 via-teal-50 to-blue-50">
<div class="bg-white/20 backdrop-blur-md rounded-xl p-6 shadow-lg">
<div class="animate-spin rounded-full h-12 w-12 border-b-2 border-green-500 mx-auto"></div>
<p class="mt-4 text-gray-700">加载中...</p>
......@@ -110,10 +108,10 @@ onUnmounted(() => {
ol {
list-style-type: decimal;
padding: 0.25rem 1rem;
li {
margin-bottom: 0.25rem;
}
}
}
</style>
......
/*
* @Date: 2025-03-20 20:36:36
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-06-20 10:00:51
* @LastEditTime: 2025-12-10 11:50:37
* @FilePath: /mlaj/src/main.js
* @Description: 文件描述
*/
......@@ -57,6 +57,6 @@ function restoreHashAfterOAuth() {
}
// 在安装路由前进行一次 hash 复原,确保初始路由正确
restoreHashAfterOAuth()
// restoreHashAfterOAuth()
app.use(router)
app.mount('#app')
......
/*
* @Date: 2025-03-20 20:36:36
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-12-09 16:47:55
* @LastEditTime: 2025-12-10 11:50:14
* @FilePath: /mlaj/src/router/guards.js
* @Description: 路由守卫逻辑
*/
......@@ -82,10 +82,9 @@ export const startWxAuth = async () => {
// 探测失败不影响授权流程,继续跳转
}
// 跳转到微信授权地址(签名与回跳使用不含 hash 的完整 URL),并通过 ret_hash 参数保留授权前页面位置
const base_url = encodeURIComponent(window.location.href.split('#')[0]);
const ret_hash = encodeURIComponent(window.location.hash || '');
const short_url = `/srv/?f=behalo&a=openid&res=${base_url}&ret_hash=${ret_hash}`;
// 跳转到微信授权地址
const raw_url = encodeURIComponent(location.href);
const short_url = `/srv/?f=behalo&a=openid&res=${raw_url}`;
location.href = short_url;
}
......