小程序服务器token,小程序-登录-token

7b5d2ea371f61e1cd8fca65056ebbd36.png

1.前端调用wx.login()获取code值

2.前端通过调用wx.getUserInfo获取iv、rawData、signature、encryptedData等加密数据,传递给后端

3.服务器通过code请求api--auth.code2Session,换回session_key和openid

示例代码

(判断用户的openid是否在数据库中不在就加入成为会员,再给前端发送token(随机字符,也可以用时间戳+openid) )

4前端得到token,保存到缓存sto,

5前端发送消息到服务器时带上token,

6服务器验证token(如果token用时间戳,跟新时间戳,)

注:

1.Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,

2.Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

3. 前端调用 wx.checkSession 接口检测当前用户登录态是否有效。(用户有可能退出小程序)

登录态过期后开发者可以再调用 wx.login 获取新的用户登录态。调用成功说明当前 session_key 未过期,调用失败说明 session_key 已过期

//开发者应在后端服务器使用getAccessToken获取 access_token(2小时有效)

//两种授权机制

第一种:每次拿授权信息前,都去login拿最新的code找后端获取数据 --token(后端自己维护)。

第二种:授权时先调用checkSession判断session_key是否失效( ),失效重新调用wx.login。没失效只给后端iv和data去获取数据,后端照样返回你数据~

session_key 是有时效性的,它的时效性就是通过 checkSession 来检查的。因此如果 checkSession 说登录失效了,那么通常你就需要重新进行微信授权,更新 session_key

4.服务器通过前端给的rawData 加获取的session_key使用sha1加密,计算出signature1

5.比对前端传的signature和自己算出来的signature1是否一致(防止数据不一致)

6.用AES算法解密encryptedData里的敏感数据

7.拿着敏感数据后做自己的逻辑

8.通知前端登陆成功

一、通过基础接口token获取用户信息

1、获取token

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

2、获取个人信息(如果不关注公众号,返回“未关注”状态,拉取不到更多信息)

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

二、通过社交接口token获取用户信息(不需要关注公众号)

1、获取CODE

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

参数scope 默认有2个值snsapi_base(只获取openid)和snsapi_userinfo(可获取更多用户信息、头像、昵称等,需要用户在网页授权)

2、获取token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

3、获取用户信息

https://api.weixin.qq.com/sns/userinfo?access_token=TOKEN&openid=OPENID&lang=zh_CN

做一个开源的小程序登录模块组件(token)

先了解下SSO 对于单点登陆浅显一点的说就是两种,一种web端的基于Cookie.另一种是跨端的基于Token,一般想要做的都优先做Token吧,个人建议,因为后期扩展也方便哦. 小程序也是呢,做成t ...

ASP.NET WebAPI 双向token实现对接小程序登录逻辑

最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...

全栈项目|小书架|微信小程序-登录及token鉴权

小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...

spring mvc+redis实现微信小程序登录

本文将详细的介绍微信小程序的登录流程以及在ssm框架下如何实现小程序用户登录 登录流程概要 主要的登录流程可以参考官方提供的一张流程图: 1.微信前台页面: 在微信版本更新之后,提高了安全机制,我们需 ...

django-微信小程序登录

小程序登录逻辑前端通过调用wx.login()获取code, 将code和用户基本信息发送到后端,后端通过request.get向微信服务器发送get请求获取用户openid和session_key, ...

小程序登录、微信网页授权(Java版)

首先呢,“登录”.“授权”.“授权登录”,是一样的意思,不用纠结. 写小程序授权登录的代码前,需要了解清楚openid与unionid的区别,这里再简单介绍一下: 腾讯有个 “微信·开放平台”,只有企 ...

基于Shiro,JWT实现微信小程序登录完整例子

小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...

微信小程序登录JAVA后台

代码地址如下:http://www.demodashi.com/demo/12736.html 登录流程时序登录流程时序 具体的登录说明查看 小程序官方API 项目的结构图: springboot项目 ...

微信小程序登录对接Django后端实现JWT方式验证登录

先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...

随机推荐

viewpager中彻底性动态添加、删除Fragment

为了解决彻底删除fragment,我们要做的是:1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就 ...

【iCore3 双核心板】例程十四:FATFS实验——文件操作

实验指导书及代码包下载: http://pan.baidu.com/s/1dEpechF iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

Performance Tuning of Spring/Hibernate Applications---reference

http://java.dzone.com/articles/performance-tuning For most typical Spring/Hibernate enterprise appli ...

一步一步学习SignalR进行实时通信_6_案例

原文:一步一步学习SignalR进行实时通信_6_案例 一步一步学习SignalR进行实时通信\_6_案例1 一步一步学习SignalR进行实时通信_6_案例1 前言 类的定义 各块功能 后台 上线 ...

linux kvm虚拟机快速构建及磁盘类型

KVM命令管理 virsh命令:用来管理各虚拟机的接口命令查看/创建/停止/关闭...支持交互模式格式:virsh 控制指令 [虚拟机名称] [参数] [root@room1pc01 桌面]# vir ...

做GUI的随笔

用的SDL库 官方网站是:https://littlevgl.com/   改网站需要FQ 字库制作网站: https://debugdump.com/t_771.html

RBAC角色权限设计

https://www.cnblogs.com/vinozly/p/4851364.html

决策树ID3算法的java实现(基本适用所有的ID3)

已知:流感训练数据集,预定义两个类别: 求:用ID3算法建立流感的属性描述决策树 流感训练数据集 No. 头痛 肌肉痛 体温 患流感 1 是(1) 是(1) 正常(0) 否(0) 2 是(1) 是(1 ...

2D Rotated Rectangle Collision

Introduction While working on a project for school, I found it necessary to perform a collision chec ...

Java并发编程:JMM (Java内存模型) 以及与volatile关键字详解

目录 计算机系统的一致性 Java内存模型 内存模型的3个重要特征 原子性 可见性 有序性 指令重排序 volatile关键字 保证可见性和防止指令重排 不能保证原子性 计算机系统的一致性 在现代计算 ...