当前位置: 首页 > news >正文

web服务,C/S框架,单设备登陆实现方案

背景: 原登陆接口,校验密码通过后,使用springsession记录会话信息,将信息存入在redis中

基于原逻辑进行多设备登陆开发,默认的时候多设备登陆开关开启,即按原来逻辑处理,只要密码登陆校验成功之后,都会将当前的会话信息存入redis中.

当多设备开关关闭时候,同一个账号同一时间只能在一个设备上运行.实现思路如下:

     1.用户每次登录时,前端在header请求头中加入DeviceId字段传给后端,登陆校验成功后,springsession将 `spring:session:sessions:+sessionid`作为key存入到redis中,将deviceId作为属性存入该key中.前端使用的库提示获取的diviceId唯一概率100%,所以加上后端获取的客户端ip+设备的mac地址,计算md5值作为设备唯一id

        而后将userId与sessionId进行映射,即一个userId对应多次登陆会话sessionId.

     2.用户访问的时候,在过滤器解析sessionid,获取userid不为空,则说明有权限访问。如果获取userid为空,则告诉无权限访问,跳转到登录页面。

     3.用户在另一台设备登录时,登陆成功后,根据userId查看对应的sessionId,根据sessionId查找在线中的会话,然后与当前登陆设备的deviceId进行对比

       如果一致则不处理(同设备下该账号可以在其他浏览器登陆),如果不一致,则删除redis缓存中的session会话信息,使之前该账号的登陆会话失效.

相关文章:

  • C++中实现String类
  • mysqld.exe运行时,提示缺少msvcr100.dll,msvcp100.dll文件,导致mysql安装失败或mysql服务无法启动
  • vue若依自定义权限控制
  • java面试题:为什么 SQL 语句不要过多的 join?
  • 【华为OD机试】智能成绩表【C卷|100分】
  • Liinux——(网络)socket编程
  • Vue3全家桶 - VueRouter - 【3】嵌套路由【children】
  • win10系统在低分辨率显示器显示模糊时
  • 点亮创造力:探索AI大模型开发的无限可能性!
  • python淘宝网页爬虫数据保存到 csv和mysql(selenium)
  • Visual Studio 2022 Version 17.9 新功能
  • PYTHON 120道题目详解(100-102)
  • 012集——显示高考天数倒计时——vba实现
  • 基于yolov5的草莓成熟度检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】
  • TypeScript常见面试题第三节
  • #Java异常处理
  • 《Java编程思想》读书笔记-对象导论
  • angular2开源库收集
  • Centos6.8 使用rpm安装mysql5.7
  • CODING 缺陷管理功能正式开始公测
  • Consul Config 使用Git做版本控制的实现
  • Facebook AccountKit 接入的坑点
  • MaxCompute访问TableStore(OTS) 数据
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Netty源码解析1-Buffer
  • orm2 中文文档 3.1 模型属性
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue.js框架原理浅析
  • 分享一份非常强势的Android面试题
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端性能优化——回流与重绘
  • 如何编写一个可升级的智能合约
  • 数据可视化之 Sankey 桑基图的实现
  • 算法系列——算法入门之递归分而治之思想的实现
  • 网络应用优化——时延与带宽
  • 我与Jetbrains的这些年
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 安徽锐锋科技IDMS系统简介
  • #HarmonyOS:基础语法
  • #include
  • (30)数组元素和与数字和的绝对差
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (二)linux使用docker容器运行mysql
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .a文件和.so文件
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net 后台导出excel ,word