فهرست منبع

:update login

0235699曾露 16 ساعت پیش
والد
کامیت
87e26c2b13
2فایلهای تغییر یافته به همراه97 افزوده شده و 65 حذف شده
  1. 24 6
      nova-pbf/components/home/index.js
  2. 73 59
      utils/login.js

+ 24 - 6
nova-pbf/components/home/index.js

@@ -478,12 +478,24 @@ Component({
       // 方案定制需要登录
       // 方案定制需要登录
       const currentUser = Parse.User.current();
       const currentUser = Parse.User.current();
       const isGuestMode = wx.getStorageSync('isGuestMode');
       const isGuestMode = wx.getStorageSync('isGuestMode');
+      const userLogin = wx.getStorageSync('userLogin');
       
       
       console.log('当前用户:', currentUser ? '已登录' : '未登录');
       console.log('当前用户:', currentUser ? '已登录' : '未登录');
+      console.log('用户手机号:', currentUser?.get('mobile'));
       console.log('游客模式:', isGuestMode);
       console.log('游客模式:', isGuestMode);
+      console.log('userLogin 存储:', userLogin);
       
       
-      if (!currentUser || isGuestMode) {
-        console.log('⚠️ 游客尝试访问咨询功能,显示登录提示');
+      // 检查用户是否真正登录(有手机号且有 userLogin 存储)
+      const isReallyLoggedIn = currentUser && currentUser.get('mobile') && userLogin;
+      
+      if (!isReallyLoggedIn || isGuestMode) {
+        console.log('⚠️ 用户未完成登录或是游客,显示登录提示');
+        
+        // 如果是游客模式,清除游客标记
+        if (isGuestMode) {
+          wx.removeStorageSync('isGuestMode');
+          wx.removeStorageSync('userLogin');
+        }
         
         
         wx.showModal({
         wx.showModal({
           title: '需要登录',
           title: '需要登录',
@@ -493,15 +505,21 @@ Component({
           success: (res) => {
           success: (res) => {
             if (res.confirm) {
             if (res.confirm) {
               console.log('用户选择:立即登录');
               console.log('用户选择:立即登录');
-              login.loginNow();
+              console.log('准备调用 login.loginNow()');
+              
+              // 直接调用登录方法,不需要延迟
+              const loginResult = login.loginNow();
+              console.log('login.loginNow() 返回值:', loginResult);
+              
+              // 如果返回 false,说明已经跳转到登录页面
+              if (!loginResult) {
+                console.log('✅ 已跳转到登录页面');
+              }
             } else {
             } else {
               console.log('用户选择:取消');
               console.log('用户选择:取消');
-              // 用户取消,不做任何操作
             }
             }
           }
           }
         });
         });
-        
-        // ✅ 重要:直接返回,不继续执行后面的跳转
         return;
         return;
       }
       }
       
       

+ 73 - 59
utils/login.js

@@ -3,72 +3,86 @@ var Parse = getApp().Parse;
 function loginNow(authPage = 'plugin://fm-plugin/fm-auth') {
 function loginNow(authPage = 'plugin://fm-plugin/fm-auth') {
   console.log('===========================================');
   console.log('===========================================');
   console.log('======= 开始登录流程 =======');
   console.log('======= 开始登录流程 =======');
-  console.log('当前用户:', Parse.User.current()?.get('mobile'));
+  
+  const currentUser = Parse.User.current();
+  const hasMobile = currentUser?.get('mobile');
+  const userLogin = wx.getStorageSync('userLogin');
+  
+  console.log('当前用户:', currentUser ? currentUser.id : '无');
+  console.log('手机号:', hasMobile || '无');
+  console.log('userLogin 存储:', userLogin || '无');
   console.log('===========================================');
   console.log('===========================================');
   
   
-  // 检查是否已登录
-  if (Parse.User.current()?.get('mobile')) {
-    wx.setStorageSync("userLogin", Parse.User.current().id);
+  // 只有同时满足以下条件才认为已登录:
+  // 1. Parse.User.current() 存在
+  // 2. 用户有手机号
+  // 3. userLogin 存储存在
+  if (currentUser && hasMobile && userLogin) {
+    console.log('✅ 用户已完整登录');
+    return true;
   }
   }
   
   
-  let userInfo = wx.getStorageSync('userLogin');
+  // 如果有 Parse 用户但没有手机号或 userLogin,清除状态重新登录
+  if (currentUser && (!hasMobile || !userLogin)) {
+    console.log('⚠️ 用户状态不完整,清除并重新登录');
+    wx.removeStorageSync('userLogin');
+  }
   
   
-  if (userInfo == '') {
-    console.log('用户未登录,跳转到授权页面');
-    
-    // 检查页面栈
-    const pages = getCurrentPages();
-    console.log('当前页面栈层数:', pages.length);
-    
-    if (pages.length >= 10) {
-      // 页面栈已满,使用 redirectTo
-      console.log('⚠️ 页面栈已满,使用 redirectTo');
-      wx.redirectTo({
-        url: authPage,
-        success: () => {
-          console.log('✅ redirectTo 跳转成功');
-        },
-        fail: (err) => {
-          console.error('❌ redirectTo 失败:', err);
-          wx.showToast({
-            title: '跳转失败,请重试',
-            icon: 'none'
-          });
-        }
-      });
-    } else {
-      // 使用 navigateTo
-      wx.navigateTo({
-        url: authPage,
-        success: () => {
-          console.log('✅ navigateTo 跳转成功');
-        },
-        fail: (err) => {
-          console.error('❌ navigateTo 失败:', err);
-          console.log('⚠️ 尝试使用 redirectTo');
-          
-          // 降级使用 redirectTo
-          wx.redirectTo({
-            url: authPage,
-            success: () => {
-              console.log('✅ redirectTo 跳转成功');
-            },
-            fail: (err2) => {
-              console.error('❌ redirectTo 也失败:', err2);
-              wx.showToast({
-                title: '跳转失败,请重试',
-                icon: 'none'
-              });
-            }
-          });
-        }
-      });
-    }
-    return false;
+  // 跳转到授权页面
+  console.log('🔄 跳转到授权页面');
+  
+  // 检查页面栈
+  const pages = getCurrentPages();
+  console.log('当前页面栈层数:', pages.length);
+  
+  if (pages.length >= 10) {
+    // 页面栈已满,使用 redirectTo
+    console.log('⚠️ 页面栈已满,使用 redirectTo');
+    wx.redirectTo({
+      url: authPage,
+      success: () => {
+        console.log('✅ redirectTo 跳转成功');
+      },
+      fail: (err) => {
+        console.error('❌ redirectTo 失败:', err);
+        wx.showToast({
+          title: '跳转失败,请重试',
+          icon: 'none'
+        });
+      }
+    });
   } else {
   } else {
-    console.log('✅ 用户已登录');
-    return true;
+    // 使用 navigateTo
+    console.log('📱 使用 navigateTo 跳转');
+    wx.navigateTo({
+      url: authPage,
+      success: () => {
+        console.log('✅ navigateTo 跳转成功');
+      },
+      fail: (err) => {
+        console.error('❌ navigateTo 失败:', err);
+        console.log('⚠️ 尝试使用 redirectTo');
+        
+        // 降级使用 redirectTo
+        wx.redirectTo({
+          url: authPage,
+          success: () => {
+            console.log('✅ redirectTo 跳转成功');
+          },
+          fail: (err2) => {
+            console.error('❌ redirectTo 也失败:', err2);
+            wx.showToast({
+              title: '跳转失败,请重试',
+              icon: 'none'
+            });
+          }
+        });
+      }
+    });
   }
   }
+  
+  console.log('===========================================');
+  return false;
 }
 }
 /* 通过小程序wx.login获取openid和session_key */
 /* 通过小程序wx.login获取openid和session_key */
 function wxLogin() {
 function wxLogin() {