redis单点登录,jwt单点登录,三方登录,RBAC

Redis单点登录
因为该项目使用的是分布式架构,采用了nginx负载均衡,所以会产生一个问题,每一个服务器都需要开辟一个空间来存储用户的信息。使用redis来代替用户信息存储空间。
用户在A机器上登录,将信息存储到redis中返回token,并存入时设置key的有效时间。
所有的服务器公用一个redis,每次操作是都是到redis中判断用户信息状态。
单点登录:
Session默认是存储到当地服务器的内存中
解决方案:
不管在那一台web服务器登录,都会把token值存放到一个集中管理的redis服务器中,客户端携带token验证时,会先到redis中获取,实现登录。
Jwt单点登录
jwt本质就是把用户信息通过加密生成一个字符串。
由头部、有效载荷、签名三部分组成
Jwt头部是一个描述JWT数据的json对象
有效载荷是七个默认字段+自定义私有字段
签名hax265(base64(header)+”.”+base64(payload),secret)
jwt是未加密的,不要包含私密信息。一旦jwt签发,有效期内一直有效。
服务端把生产的token颁发给客户端而自己不会保存。
使用jwt技术及私钥公钥来实现无需服务器保存用户登录信息。

三方登录
由vue端发送post请求到后端获取微博的扫描url,django端返回微博的url返回给前端,vue端通过路由跳转到微博的扫描页面,微博扫描后携带一个code码值跳转到vue端的redirect_uri地址上,可以通过code码到微博访问扫码人的微博信息。
前端vue将code码交给后端,后端携带code到微博中验证用户信息,信息正确进行一下操作,如果用户在本客户端绑定过直接登录成功,没有绑定后端返回微博的用户id到前端。前端vue判断type状态,type为零时直接跳转到首页反之携带微博uid跳转到绑定页面。Vue绑定页面中发送用户信息、微博uid到后端,后端判断用户是否存在,用户存在绑定用户信息,用户不存在时创建用户并进行绑定。
RBAC
RBAC由用户表、角色表、权限表、资源表组成
RBAC简单的来说就是角色的访问控制。
用户表:用户信息存储表
角色表:管理员,学生,老师,校长
权限表:角色和资源的对应关系,这个角色可以访问那些资源
资源表:通过不同的路由对应不同的资源,表数据的增删改查。
权限本质是对数据库中表中数据的增删改查操作
不同操作根据前端不同路由,通过get、post、put、delete方法操作数据库表
对权限的控制时判断该用户是否拥有该路由的操作权限
把角色和角色之间进行路由和请求进行关联
原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14466062.html