Bläddra i källkod

小程序调试

skyline 2 månader sedan
förälder
incheckning
503a43ecc7

+ 1 - 1
haha-miniapp/src/main/resources/application.yml

@@ -100,7 +100,7 @@ haha:
 # Sa-Token 配置
 sa-token:
   # token 名称(同时也是 cookie 名称)
-  token-name: access_token
+  token-name: accessToken
   # token 有效期(单位:秒)- 7天
   timeout: 604800
   # token 临时有效期(单位:秒)

+ 5 - 5
haha-mp/src/App.vue

@@ -21,7 +21,7 @@ onShow(() => {
  */
 onHide(() => {
   console.log("App Hide");
-  
+
   // 当应用隐藏时,清理购物页面的轮询状态
   const pollingActive = uni.getStorageSync('shoppingPollingActive');
   if (pollingActive === 'true') {
@@ -35,15 +35,15 @@ onHide(() => {
  * 如果未登录且当前不在登录页,则跳转到登录页
  */
 const checkLoginStatus = () => {
-  const token = uni.getStorageSync('access_token');
-  
+  const token = uni.getStorageSync('accessToken');
+
   // 获取当前页面路径
   const pages = getCurrentPages();
   const currentPage = pages[pages.length - 1];
   const currentPath = currentPage ? currentPage.route : '';
-  
+
   console.log('[App] 检查登录状态 - token:', token ? '已存在' : '不存在', ', 当前页面:', currentPath);
-  
+
   // 如果没有token且不在登录页,跳转到登录页
   if (!token && currentPath !== 'pages/login/login') {
     console.log('[App] 未登录,跳转到登录页');

+ 29 - 29
haha-mp/src/pages/login/login.vue

@@ -9,38 +9,38 @@
     <view class="login-content">
       <!-- 账号密码登录表单 -->
       <view class="form-item">
-        <input 
-          class="input" 
-          type="number" 
-          placeholder="请输入手机号" 
+        <input
+          class="input"
+          type="number"
+          placeholder="请输入手机号"
           v-model="loginForm.phone"
           maxlength="11"
         />
       </view>
       <view class="form-item">
-        <input 
-          class="input" 
-          type="password" 
-          placeholder="请输入密码" 
+        <input
+          class="input"
+          type="password"
+          placeholder="请输入密码"
           v-model="loginForm.password"
         />
       </view>
-      
+
       <button class="login-btn" @click="onPasswordLogin">
         立即登录
       </button>
 
       <!-- 微信手机号一键登录 (个人版小程序暂不可用,已注释) -->
-      <!-- 
-      <button 
-        class="login-btn wechat-btn" 
-        open-type="getPhoneNumber" 
+      <!--
+      <button
+        class="login-btn wechat-btn"
+        open-type="getPhoneNumber"
         @getphonenumber="onGetPhoneNumber"
       >
         微信手机号一键登录
       </button>
       -->
-      
+
       <view class="agreement">
         登录即代表您同意<text class="link">《用户协议》</text>和<text class="link">《隐私政策》</text>
       </view>
@@ -123,20 +123,20 @@ const handleLoginSuccess = (res: any) => {
   console.log('[登录成功] 收到的响应数据:', res);
   console.log('[登录成功] token:', res.token);
   console.log('[登录成功] userInfo:', res.userInfo);
-  
+
   // 使用auth工具保存token和用户信息
   setToken(res.token);
   setUserInfo(res.userInfo);
-  
+
   // 验证保存是否成功
-  const savedToken = uni.getStorageSync('access_token');
+  const savedToken = uni.getStorageSync('accessToken');
   console.log('[登录成功] 保存后验证 - token:', savedToken ? '已保存' : '保存失败');
-  
+
   uni.showToast({
     title: '登录成功',
     icon: 'success'
   });
-  
+
   // 根据redirect参数跳转
   setTimeout(() => {
     if (redirectUrl.value) {
@@ -170,20 +170,20 @@ const handleLoginSuccess = (res: any) => {
   align-items: center;
   margin-top: 100rpx;
   margin-bottom: 150rpx;
-  
+
   .logo {
     width: 160rpx;
     height: 160rpx;
     margin-bottom: 30rpx;
   }
-  
+
   .title {
     font-size: 40rpx;
     font-weight: bold;
     color: #333;
     margin-bottom: 10rpx;
   }
-  
+
   .subtitle {
     font-size: 28rpx;
     color: #999;
@@ -192,11 +192,11 @@ const handleLoginSuccess = (res: any) => {
 
 .login-content {
   width: 100%;
-  
+
   .form-item {
     width: 100%;
     margin-bottom: 30rpx;
-    
+
     .input {
       width: 100%;
       height: 90rpx;
@@ -207,7 +207,7 @@ const handleLoginSuccess = (res: any) => {
       box-sizing: border-box;
     }
   }
-  
+
   .login-btn {
     width: 100%;
     height: 90rpx;
@@ -220,22 +220,22 @@ const handleLoginSuccess = (res: any) => {
     margin-top: 40rpx;
     margin-bottom: 40rpx;
     border: none;
-    
+
     &::after {
       border: none;
     }
-    
+
     &.wechat-btn {
       background-color: #07c160;
       color: #fff;
     }
   }
-  
+
   .agreement {
     font-size: 24rpx;
     color: #999;
     text-align: center;
-    
+
     .link {
       color: #576b95;
     }

+ 8 - 8
haha-mp/src/utils/auth.ts

@@ -7,7 +7,7 @@
  * 获取本地存储的token
  */
 export const getToken = (): string => {
-  const token = uni.getStorageSync('access_token');
+  const token = uni.getStorageSync('accessToken');
   console.log('[Auth] 获取token:', token ? '存在(长度:' + token.length + ')' : '不存在');
   return token || '';
 };
@@ -17,10 +17,10 @@ export const getToken = (): string => {
  */
 export const setToken = (token: string): void => {
   console.log('[Auth] 保存token:', token ? '有效(长度:' + token.length + ')' : '无效');
-  uni.setStorageSync('access_token', token);
-  
+  uni.setStorageSync('accessToken', token);
+
   // 验证保存是否成功
-  const saved = uni.getStorageSync('access_token');
+  const saved = uni.getStorageSync('accessToken');
   console.log('[Auth] 保存后验证:', saved === token ? '成功' : '失败');
 };
 
@@ -28,7 +28,7 @@ export const setToken = (token: string): void => {
  * 清除本地存储的token
  */
 export const removeToken = (): void => {
-  uni.removeStorageSync('access_token');
+  uni.removeStorageSync('accessToken');
 };
 
 /**
@@ -80,14 +80,14 @@ export const checkAuth = (redirectUrl?: string): boolean => {
     if (redirectUrl) {
       loginUrl += `?redirect=${encodeURIComponent(redirectUrl)}`;
     }
-    
+
     uni.reLaunch({
       url: loginUrl
     });
-    
+
     return false;
   }
-  
+
   return true;
 };
 

+ 14 - 13
haha-mp/src/utils/request.ts

@@ -34,14 +34,15 @@ interface ResponseData<T = any> {
 export const request = <T = any>(config: RequestConfig): Promise<T> => {
   return new Promise((resolve, reject) => {
     const { url, method = 'GET', data, header = {}, timeout = API_CONFIG.timeout } = config;
-    
+
     // 构建完整URL
-    const fullUrl = url.startsWith('http') ? url : `${API_CONFIG.baseUrl}${url}`;
-    
+    let fullUrl = url.startsWith('http') ? url : `${API_CONFIG.baseUrl}${url}`;
+
     // 添加token到请求头
     const token = getToken();
     if (token) {
-      header['access_token'] = token;
+      header['accessToken'] = token;
+
       if (API_CONFIG.enableLog) {
         console.log('[请求拦截] 添加token到请求头:', token.substring(0, 8) + '...');
       }
@@ -50,17 +51,17 @@ export const request = <T = any>(config: RequestConfig): Promise<T> => {
         console.warn('[请求拦截] 未找到token,请求将不携带token');
       }
     }
-    
+
     // 添加Content-Type
     if (!header['Content-Type']) {
       header['Content-Type'] = 'application/json';
     }
-    
+
     // 打印请求日志
     if (API_CONFIG.enableLog) {
       console.log(`[请求] ${method} ${fullUrl}`, data);
     }
-    
+
     // 发起请求
     uni.request({
       url: fullUrl,
@@ -73,9 +74,9 @@ export const request = <T = any>(config: RequestConfig): Promise<T> => {
         if (API_CONFIG.enableLog) {
           console.log(`[响应] ${method} ${fullUrl}`, res.data);
         }
-        
+
         const responseData = res.data as ResponseData<T>;
-        
+
         // 处理HTTP状态码
         if (res.statusCode !== 200) {
           const errorMsg = `请求失败: HTTP ${res.statusCode}`;
@@ -86,7 +87,7 @@ export const request = <T = any>(config: RequestConfig): Promise<T> => {
           reject(new Error(errorMsg));
           return;
         }
-        
+
         // 处理业务状态码
         if (responseData.code === 200 || responseData.code === 0) {
           // 成功
@@ -120,7 +121,7 @@ export const request = <T = any>(config: RequestConfig): Promise<T> => {
       fail: (err: any) => {
         // 网络错误
         console.error(`[请求失败] ${method} ${fullUrl}`, err);
-        
+
         let errorMsg = '网络请求失败';
         if (err.errMsg) {
           if (err.errMsg.includes('timeout')) {
@@ -129,12 +130,12 @@ export const request = <T = any>(config: RequestConfig): Promise<T> => {
             errorMsg = '网络连接失败,请检查网络';
           }
         }
-        
+
         uni.showToast({
           title: errorMsg,
           icon: 'none'
         });
-        
+
         reject(new Error(errorMsg));
       }
     });