在小程序确定一个事实: 小程序没有web那种用户与服务器的Session机制
但我们可创建一个'标识'来实现登陆态维护, 这个标识就相当于web中的Session, 用于标识用户
这个标识我命名为: session_token (见下文的第4.点 生成一个会话标识)
在微信小程序中,我们可能涉及到以下三类登录方式:
- 自有的账号注册和登录
- 使用其他第三方平台账号登录
- 使用微信账号登录(即直接使用当前已登录的微信账号来作为小程序的用户进行登录)
先做一个测试, 获取SessionID:
@Controller
public class GetSessionTestController {
@RequestMapping("/getSession")
public void getSessionTest(HttpServletRequest request) {
HttpSession session = request.getSession();
System.out.println(session.getId());
}
}
使用小程序多次发如下请求, 得到SessionID都不相同
wx.request({
url: 'http://localhost:4444/getSession',
})
使用浏览器多次发如下请求, 得到的SessionID是相同的
http://localhost:4444/getSession
原理是这样的: 使用浏览器发请求, SessionID会来回传递, 使用的是同一个Session, 所以SessionID相同
而使用小程序发请求, 就不一样了, 小程序与开发者服