单点登录
SSO英文全称Single Sign On,单点登录;
SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
1)、任何系统都必须去登陆服务器进行登录
2)、服务器就记住了登录状态
3)、其他系统访问受保护资源,需要再次登录,跳转到sso_server登录的时候,服务器告诉客户端,已经登录过,无须登录。登录过得信息
社交登录
OAuth2.0协议
-
OAuth:OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
-
OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
官方版流程
(A)用户打开客户端以后,客户端要求用户给予授权。
(B)用户同意给予客户端授权。
(C)客户端使用上一步获得的授权,向认证服务器申请令牌。
(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
(E)客户端使用令牌,向资源服务器申请获取资源。
(F)资源服务器确认令牌无误,同意向客户端开放资源。
社交登录的步骤
1)、给页面放一个社交登录按钮,点击地址是
<微博登录
2)、用户只要授权通过了,会自动跳转到我们指定的http://www.gulishop.com/success,会给url后面带一个code=xxxxxxxx
3)、拿到这个code发送请求换取access_token即可。
4)、拿到access_token可以调用所有的开放api;
https://open.weibo.com/apps/771268000/privilege
你可以用户的信息都保存自己的网站。
核心:
code一次性的,只要用过就作废。
access_token:是固定的,一段时间完全固定。
uid:是永远固定的。
我们自己的系统如何标识唯一用户,就是使用社交网站的uid。
购物车
将购物车存在Redis,用Hash数据结构。
Hash是一个map,如下图。skuId代表库存商品编号
购物车分两种:
1.在线购物车,用户已经登录,生成一个access_token作为key
2.离线购物车,用户未登录,cart-key = uuid
1)、购物车数据保存在redis中,使用分布式集合;【redisson.getMap】
2)、用户对于购物车的所有操作,都需要传入cart-key,如果用户登录了,还需要传入token
购物车需要提供的所有方法;
1)、添加到购物车
2)、修改购物项
3)、删除购物项
4)、选中/选不中购物项
5)、返回整个购物车
6)、点击去结算-获取购物车中需要结算的数据
技术:
1)、分布式集合
2)、JSON.parseObject(str, new TypeReference<Set
评论区