方案 1:
redis 存储格式:key(用户 Id123456789) --- value(token)
使用方式:用户拿 id 和 toen 操作业务
示例:用户操作业务
判断用户 id 是否为空
为空:未登录
不为空:判断 redis 是否包含 id 为 123456789 的 key
不包含:过期失效(跳转登陆)
包含:验证 token 是否一致
一致:操作业务
不一致:异地登陆(重新登陆-覆盖 id
为 123456789 的 token )
方案 2:
redis 存储格式:key(token )---value(用户信息)
使用方式:用户拿 uuid 操作业务
示例:用户操作业务
判断 cookie 是否包含 token
不包含:未登录
包含:判断 redis 是否包含此 token
包含:操作业务
不包含:未登录
刚才想了想,这两种方案的差别是方案 1 不支持多端登陆,方案 2 支持多端登陆吧,问下大家在设计 SSO 系统是怎么设计的呢?或者说常用的方案是什么呢?不太了解公司是怎么用的,好奇问下。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.