|
|
@@ -19,7 +19,7 @@
|
|
|
* 进一步区分商品和货品的关系
|
|
|
* 地址优化,目前每一次点击都会请求后台,应该缓存已有的数据
|
|
|
* 商品数量和规格中,如果货品数量不足,则显示不能点击的效果
|
|
|
-* 登陆逻辑重新设计,如果用户没有登陆,则相关页面显示登陆的效果
|
|
|
+* 登录逻辑重新设计,如果用户没有登录,则相关页面显示登录的效果
|
|
|
|
|
|
## 3.1 litemall-wx-api
|
|
|
|
|
|
@@ -71,25 +71,25 @@ var WxApiRoot = 'http://localhost:8082/wx/';
|
|
|
|
|
|
因此,开发阶段用户可以按照具体情况切换1,2或3的选项。
|
|
|
|
|
|
-### 3.2.2 登陆
|
|
|
+### 3.2.2 登录
|
|
|
|
|
|
-按照官方文档,开发者采用`wx.login`方法即可实现登陆操作;
|
|
|
-然而,由于`wx.login`只能返回临时登陆凭证`code`,从服务器也只能返回对应的sessionId,
|
|
|
-因此虽然已经可以视作登陆,但是在小程序中不能显示有意义的登陆状态,
|
|
|
+按照官方文档,开发者采用`wx.login`方法即可实现登录操作;
|
|
|
+然而,由于`wx.login`只能返回临时登录凭证`code`,从服务器也只能返回对应的sessionId,
|
|
|
+因此虽然已经可以视作登录,但是在小程序中不能显示有意义的登录状态,
|
|
|
因此实际很多小程序是继续采用`wx.getUserInfo`来进一步请求用户信息。
|
|
|
|
|
|
-因此本模块中,用户的登陆状态也是由`wx.login`和`wx.getUserInfo`组成。
|
|
|
+因此本模块中,用户的登录状态也是由`wx.login`和`wx.getUserInfo`组成。
|
|
|
|
|
|
-#### 3.2.2.1 登陆检测
|
|
|
+#### 3.2.2.1 登录检测
|
|
|
|
|
|
-用户可以采用`user.checkLogin`来检查是否`已登陆`,而其检测逻辑是:
|
|
|
+用户可以采用`user.checkLogin`来检查是否`已登录`,而其检测逻辑是:
|
|
|
|
|
|
1. 可以从storage获取`userInfo`和`token`
|
|
|
2. 同时`wx.checkSession`也成功。
|
|
|
|
|
|
-#### 3.2.2.2 登陆时机
|
|
|
+#### 3.2.2.2 登录时机
|
|
|
|
|
|
-登陆请求用户信息的时机存在两种设计:
|
|
|
+登录请求用户信息的时机存在两种设计:
|
|
|
|
|
|
1. 一种是小程序加载时,即申请用户信息,这种实现较简单;
|
|
|
2. 另外一种是小程序加载时不需要,但是小程序用户需要真正用户信息时才申请用户信息,
|
|
|
@@ -97,30 +97,30 @@ var WxApiRoot = 'http://localhost:8082/wx/';
|
|
|
|
|
|
目前采用第二张实现,可以分成两种情况:
|
|
|
|
|
|
-* 用户主动登陆
|
|
|
+* 用户主动登录
|
|
|
|
|
|
- 用户主动登陆,指的是`我的`页面中用户没有登陆显示`点击登陆`的效果。
|
|
|
+ 用户主动登录,指的是`我的`页面中用户没有登录显示`点击登录`的效果。
|
|
|
|
|
|
-* 用户被动登陆
|
|
|
+* 用户被动登录
|
|
|
|
|
|
- 用户被动登陆,指的是用户想购买商品或者需要用户登陆才能操作的行为,
|
|
|
+ 用户被动登录,指的是用户想购买商品或者需要用户登录才能操作的行为,
|
|
|
此时因为向服务器请求时token没有设置,因此服务器拒绝用户的请求,同时返回`401`业务代码。
|
|
|
|
|
|
- 目前需要检测用户登陆的页面有:
|
|
|
+ 目前需要检测用户登录的页面有:
|
|
|
|
|
|
* 购物车
|
|
|
* 我的主页
|
|
|
|
|
|
讨论:
|
|
|
-> 对于第二张情况,原nideshop-mini-program项目是采取一种自动登陆的方式。
|
|
|
+> 对于第二张情况,原nideshop-mini-program项目是采取一种自动登录的方式。
|
|
|
> 这里则采用跳转登录页面的方式。
|
|
|
|
|
|
-#### 3.2.2.3 登陆操作
|
|
|
+#### 3.2.2.3 登录操作
|
|
|
|
|
|
-如前面讨论,这里的登陆操作实际包含两个操作`wx.login`和`wx.getUserInfo`。
|
|
|
-用户可以采用`user.loginByWeixin`来进行登陆操作。
|
|
|
+如前面讨论,这里的登录操作实际包含两个操作`wx.login`和`wx.getUserInfo`。
|
|
|
+用户可以采用`user.loginByWeixin`来进行登录操作。
|
|
|
|
|
|
-按照官网文档,用户登陆前应该检测以下,来避免频繁无意义的登陆操作,
|
|
|
+按照官网文档,用户登录前应该检测以下,来避免频繁无意义的登录操作,
|
|
|
因此较合适的做法如下所示:
|
|
|
|
|
|
```
|
|
|
@@ -131,18 +131,18 @@ var WxApiRoot = 'http://localhost:8082/wx/';
|
|
|
userInfo: res.data.userInfo,
|
|
|
});
|
|
|
}).catch((err) => {
|
|
|
- util.showErrorToast('登陆失败');
|
|
|
+ util.showErrorToast('登录失败');
|
|
|
});
|
|
|
|
|
|
});
|
|
|
```
|
|
|
|
|
|
-#### 3.2.2.4 登陆拒绝授权
|
|
|
+#### 3.2.2.4 登录拒绝授权
|
|
|
|
|
|
-还存在一个问题,当用户登陆时,会出现"微信授权"的对话框。
|
|
|
-如果用户选择”拒绝“,那么之后用户的登陆操作总是失败的。
|
|
|
+还存在一个问题,当用户登录时,会出现"微信授权"的对话框。
|
|
|
+如果用户选择”拒绝“,那么之后用户的登录操作总是失败的。
|
|
|
|
|
|
-目前的做法是,用户拒绝授权后,如果用户登陆失败,则返回信息框,
|
|
|
+目前的做法是,用户拒绝授权后,如果用户登录失败,则返回信息框,
|
|
|
提醒用户“请退出,左滑删除小程序,然后重新进入进行授权”。
|
|
|
|
|
|
### 3.2.3 立即购买和放入购物车
|