之前项目中做过一个点单系统,前端用的是小程序,用户必须先登录才能执行点菜,下单等操作,小程序登录时,先调用了wx.login方法,获取到了code(临时登录凭证),然后前端也就是小程序端发送请求并携带ode发送至服务端,服务端接收到前端发送的code后要获取到用户的openld,因为openld是用户的唯一标识,所有要获取此属性作为用户的信息存储到数据库,获取openid,通过httpclient向微信接口发送htp请求,携带好accessid,accesskey,code等属性(这些属性可以在官方文档查看),获取到后,是字符审形式的,可以用ISON.parseobiet方法他转为对象获取openid,得到后,先判断是否为空,为空报错,不为空继续执行,然后判断通过openid查询用户表中是否有此用户,无则相当于是新用户,执行插入,将用户的openid插入,并通过usegeneratekey和keyproperty,有则继续执行,之后生成iwt token,将用户的id作为载荷,设置好secret秘钥,过期时间,生成token,之后将token,openid,用户的id返回给小程序端,小程序端将token存储到localstorage中,以后再登录的时候,前端发送的请求时携带token,服务端通过拦裁器,解析token,得到用户id,存入到threadlocal中,以便之后做校验或者设置用户信息,比如提交订单,点选菜品到购物车等
java面试题之小程序登录流程
于 2023-12-05 21:15:37 首次发布