通常来说 获取令牌token 的逻辑如下:
客户端拿着账号和密码,向服务器兑换token令牌,用于后续系列操作。
以下是一个简单的权限验证模型:
服务器要做三件事:
1.验证客户端有token,即是否合法;
2.验证token是否过期,即是否有效;
3.Token是否有对应的(访问下单接口的)权限。
以小程序客户端为例:
小程序为每个用户分配一个Code码,用户登录小程序即可获取,个人服务器获取到用户的Code,拿着Code以及appid和secret等信息向小程序服务器 换取 用户的openid和session_key(这里我们不关心session_key,它是用于解密获取userid的)。啥,为啥不关心?那还是解释下userid和openid的不同吧,同一个用户对于不同的小程序有不同的openid,但是userid却始终相同,所以userid可以用于关联两个小程序,一般情况下不会被使用。
openid对于用户来说是唯一标识且没有失效期,所以不适合返回客户端,很不安全的。因此生成有保质期的Token令牌,为了减轻数据库的压力(否则频繁验证令牌合法,一直读取查询数据库吃不消的),将Token和用户信息存储在缓存中,可以加快访问速度;但是有得有失,缓存的使用与数据库相比会更加麻烦。
小程序携带令牌,在缓存中校验Token,若能够通过,服务器返回小程序端想要的接口。
至于怎么校验,包括服务器怎么获取到code并且生成token和用户信息绑定的,下次揭晓 (^▽^)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。