高端网站开发公司有哪些,域名地址查询网,WordPress搜索功能增强,做单屏网站 高度是多少大家好#xff0c;我是广漂程序员DevinRock#xff01;
1. 需求分析
前阵子#xff0c;和问答群里一个前端朋友#xff0c;随便唠了唠。期间他问了我一个问题#xff0c;让我印象深刻。
他问的是#xff0c;限制同一账号只能在一处设备上登录#xff0c;是如何实现的…大家好我是广漂程序员DevinRock
1. 需求分析
前阵子和问答群里一个前端朋友随便唠了唠。期间他问了我一个问题让我印象深刻。
他问的是限制同一账号只能在一处设备上登录是如何实现的并且他还把这个功能称为“单点登录”。
我说这不叫“单点登录”这是“单设备登录”。
于是当时对此概念区分不清的他和我在语言上开始了深度纠缠。
所以在后面我就想这个功能问题有必要整理一下分享给现在还不清楚两者概念的朋友们。 2. 功能实现
先聊聊“单点登录”和“单设备登录”区别再说说实现“单设备登录”的步骤。
2.1 单点登录和单设备登录的区别
“单点登录”和“单设备登录”是两个完全不同的概念。
单设备登录指在某个给定的时间同一用户只能在一台设备上进行登录如果在其他设备上尝试登录先前的会话将被中断或注销。
单点登录简称SSO指允许用户使用一组凭据如用户名和密码登录到一个系统然后可以在多个相关系统中无需重新登录即可访问受保护的资源。
关于“单点登录”的实现这里简单说一下。一般有两种方式若后端处理部署一个认证中心这是标准做法若前端处理可以用LocalStorage做跨域缓存。
2.2 单设备登录的实现
要实现单设备登录一般来说有两种方式使用数据库记录登录状态 和 使用令牌验证机制 。
使用令牌验证机制 的实现步骤如下
• 用户登录时生成token将账号作为keytoken作为value并设置过期时间存入redis中。
• 当用户访问应用时在拦截器中解析token获取账号然后用账号去redis中获取相应的value。
• 如果获取到的value的token与当前用户携带的token一致则允许访问如果不一致则提示前端重复登录让前端清除token并跳转到登录页面。
• 当用户在另一台设备登录时其token也会存入redis中这样就刷新了token的值和redis的过期时间。 使用数据库记录登录状态 的实现步骤如下
• 在用户登录时记录用户的账号信息、登录设备的唯一标识符如设备ID或IP地址以及登录时间等信息到数据库中的一个登录表。
• 每次用户的登录请求都会查询数据库中的登录表检查是否存在该用户的登录记录。如果存在记录则比对登录设备的标识符和当前设备的标识符是否相同。
• 如果当前设备与登录设备不匹配拒绝登录并提示用户在其他设备上已登录。若匹配则更新登录时间。
• 当用户主动退出登录或超过一定时间没有操作时清除该用户的登录记录。 结语
建立这个平台的初衷
打造一个专注于前端功能问题的问答平台让大家高效搜索处理同样问题。通过不断积累问题一起练习逻辑思维并顺便学习相关知识点。遇到有共鸣的问题与众多同行朋友们一起讨论一起沉淀成长。为了给功能问题专栏添加乐趣增设技术资讯、实用干货两个新专栏。