用java实现一个简单的单用户登陆功能的思路
所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录。
我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A 处登录的账号。
要实现这样一个功能,如果我们项目使用了springmvc我们可以使用拦截器来替代过滤器,否则我们使用过滤器也可以实现,我们需要一个这样的东西来进行拦截用户的请求。我们的user表里也需要添加一个token字段,用于存放当前登录者的一个唯一标识。
大致的思路是这样的:
用户A请求123这个账号登陆,登陆成功后生成一个唯一token存入123这个对象的token里,并把这个user对象放入session中,最重要的是别忘记更新这个用户的表记录。如果这时用户B也请求登陆123账号,同样的我们也在登陆成功后生成要给唯一token存入123这个对象的token里,并把这个user对象放入session中,最重要的是别忘记更新这个用户的表记录。现在的情况是有两个用户在两个地点登陆了同一个账号123,那么此时如果用户A向服务器发送了一个请求他想要去查看个人资料,我们的拦截器就要开始工作了,可以说整个单用户登陆的重点都在这个拦截器里面,在拦截器里面我们去获取session中保存的user对象,此时我们要明白当前这个user对象里的token标记着的是用户A,而数据库里真实token的数据已经在用户B登陆后被修改了,标记着的是用户B,我们根据这个条件用session中的user对象和数据库中的user去进行比较判断token是否相同就可以实现单用户登陆这个功能了,如果相同说明是同一个用户,否则就说明有其他人在其他地方登陆了,需要清除掉当前session中的user去退出当前这个账号即可。
用java实现一个简单的单用户登陆功能的思路的更多相关文章
- java实现一个简单的单链表反转
自定义一个单链表,实现链表反转: 1.普通方法实现 2.递归方式实现 package listNode; public class ReverseNode { public static void m ...
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)
JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...
- simple-spa 一个简单的单页应用实例
上两篇文章说过要写一个简单的单页应用例子的, 迟迟没有兑诺, 实在有愧 哈哈.这篇写给小白用户哈. 正好趁今天风和日丽,事情不多, 把从项目里的代码扣取了一下, 整理了一个简单的例子.因为我们生产项目 ...
- 使用JAVA写一个简单的日历
JAVA写一个简单的日历import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateF ...
- 使用 java 实现一个简单的 markdown 语法解析器
1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...
- java:jsp: 一个简单的自定义标签 tld
java:jsp: 一个简单的自定义标签 tld 请注意,uri都是:http://www.tag.com/mytag,保持统一,要不然报错,不能访问 tld文件 <?xml version=& ...
- Java实现一个简单的网络爬虫
Java实现一个简单的网络爬虫 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWri ...
- Java实现一个简单的文件上传案例
Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...
随机推荐
- Python web前端 03 CSS属性
Python web前端 03 CSS属性 一.文字.文本属性 1.文字属性 font-family #字体类型浏览器默认的字体是微软雅黑,字体中有多个字体的时候,如果前面的字体没有就使用后面的字体 ...
- LeetCode记录之13——Roman to Integer
能力有限,这道题采用的就是暴力方法,也只超过了39%的用户.需要注意的就是罗马数字如果IXC的后一位比前一位大的采取的是减的方式. Given a roman numeral, convert it ...
- 【算法笔记】B1024 科学计数法
1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位, ...
- 【算法笔记】B1004 成绩排名
1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 ...
- 应大数据时代而写了个磁力搜索的网页- WWW.MOVIH.COM 磁力
应大数据时代而写了个磁力搜索的网页- 索马里搜索磁力 http://www.,movih.com/ BT磁力示例网站:WWW.MOVIH.COM 采用分布式架构: JAVA系统:JBOSS7+EJB3 ...
- Linux 安装 python3
1. 安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline- ...
- Jsch初步
[From] http://xpenxpen.iteye.com/blog/2061869 上一篇文章我们成功搭建了sshd服务器,并通过3种方式登陆上了ssh.这一篇我们将用开源jar包jsch来登 ...
- Linux mysql中文乱码问题
1.debian系统 (1)mysql 5.5版本之前 vim /etc/mysql/my.cnf 在 [client] 下面加入 default-character-set=utf8 在 [m ...
- PIE软件介绍
1. 产品概述 PIE(Pixel Information Expert)软件是北京航天宏图信息技术股份有限公司自主研发的新一代遥感影像处理软件,北京航天宏图信息技术股份有限公司是国内知名的卫星应用服 ...
- 软件测试作业——WordCount的测试
一.代码提交 1.代码地址:https://gitee.com/zst1978805482/WordCount 2.作业地址:https://edu.cnblogs.com/campus/xnsy/T ...