java使用token防止用户重复登录以及验证用户登录
登录成功后,使用用户id构造生成一个token并保存到redis中,同时也保存用户id到session中
生成token的代码如下:
@Overridepublic String createToken(String phone,String appId) throws Exception {long loginTime = DateUtil.getNowTimeStampTime().getTime();String str = String.valueOf(phone) + CommonConstant.COMMA_CHARACTER+appId+ CommonConstant.COMMA_CHARACTER+ String.valueOf(loginTime);byte[] cipherData = null;String result = null;cipherData = RSAEncrypt.encrypt(Rsa2Manager.getPublicKeyGmall(), str.getBytes("UTF-8"));//RSA加密result = Base64.encode(cipherData);//加密return result;}
checkToken,获取当前session,有效则已登录,无效则获取当前的token,解密token,再去查询redis中的token是否有效,有效则再次对session赋值,还原登录状态
@Overridepublic boolean isLogin(HttpSession session) throws Exception {boolean islogin = false;String appId = (String) session.getAttribute(UserConstant.LOGIN_APP_ID);String userId = (String) session.getAttribute(UserConstant.USER_SESSION_KEY);if (StringUtils.isNotBlank(appId) && StringUtils.isNotBlank(userId)) {islogin = true;} else {String phone ="";String appid ="";HttpServletRequest request = getCurrentThreadRequest();String currentToken = request.getHeader(CommonConstant.REQUEST_HEADER_TOKEN_NAME);if(StringUtils.isNotBlank(currentToken)){byte[] res = null;res = RSAEncrypt.decrypt(Rsa2Manager.getPrivateKeyGmall(), Base64.decode(currentToken));String restr = new String(res);String[] str = restr.split(",");phone = str[0];appid = str[1];String redisKey = CommonConstant.LOGIN_TOKEN.concat(phone);String token = RedisUtil.getRedisString(redisKey);if (StringUtils.isNotBlank(token)) {request.getSession().setAttribute(UserConstant.USER_SESSION_KEY, phone);request.getSession().setAttribute(UserConstant.LOGIN_APP_ID, appid);islogin = true;}else{islogin = false;}}}return islogin;}
转载于:https://www.cnblogs.com/ouyanxia/p/7490613.html
java使用token防止用户重复登录以及验证用户登录相关推荐
- java实现简单QQ登录界面验证_QQ登录界面实现
正版现货ui设计必修课sketch ue光盘 191.8元 包邮 (需用券) 去购买 > Java实现QQ登录界面 QQ登录界面也是界面的一种,在实现界面时我们需要一些界面开发包,如: pack ...
- 注册华为云用户: 访问官网 https://huaweicloud.com/ 注册华为云用户(需手机号验证) 登录并完成实名认证 为账号充值不少于100元(不用时可提现
3.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:注册华为云 1)访问官网,如图-1所示: 图-1 2)注册用户,如图-2所示: 图-2 2)登陆并完成实名认证,如图-3所示: 图-3
- Java AD域登录实现正常本地登录操作
Java 域登录 实现 前言 新建一个测试类 AD域的userName和passWord身份验证成功之后返回 身份验证失败之后返回 验证成功后将之代入项目登录的位置,根据自己的登录接口和登陆逻辑来修改 ...
- java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份
我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...
- 什么是单点登录,实现单点登录的三种方法
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得 ...
- android 客户端使用service处理用户名和密码验证,android透过webservice验证用户
当前位置:我的异常网» Web前端 » android透过webservice验证用户 android透过webservice验证用户 www.myexceptions.net 网友分享于:2015 ...
- java 防止用户重复登录_JAVA 如何避免用户的重复登录
展开全部 读懂下面代码,就知道如何实现 一个用户登陆 踢掉之前登陆的用户了//第一步 // 此监听62616964757a686964616fe4b893e5b19e31333337626166器用来 ...
- Java防止用户同一时间重复登录(包括异地登录)
有时候我们在做登录模块过程中难免会遇到这种问题,即使我们给用户进行了多重判断,比如:用户名,管理员,验证码,一系列的判断- 你是否真正考虑到用户的体验,比如不能让用户在同一时间,同一个浏览器重复登录问 ...
- java判断用户是否在某一个区域登录_Java实现QQ登录和微博第三方登录
来源:http://www.cnblogs.com/liuxianan转自公众号:Java后端 1. 前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了 QQ 和微博这 2 大常 ...
最新文章
- api zabbix 拓扑图 获取_zabbix网络拓扑图配置-Maps(示例代码)
- 1 jquery对checkbox的简单操作
- Apollo进阶课程 ⑦ | 高精地图的采集与生产
- 年轻人,你为什么来阿里做技术?
- 计算机控制用户自己编写什么软件吗,计算机控制软件技术基础.ppt
- Java版单链表讲解
- LINUX 文件夹打包
- 【Java】UDP Socket编程案例——文件传输聊天工具
- 软件基本功:重构工作的考虑及执行
- Java SSM开发大众点评后端 Mybatis实战商城项目
- 《计算机科学导论》学习笔记
- 水位传感器工作原理及应用
- mac iphone模拟器 真机 操作
- 简单易懂的现代魔法——Play Framework攻略1
- Mac浏览器提示安装证书错误,如何修复 Mac 上的无效证书错误
- 如何获取计算机网络地址,如何查看电脑获取到的IP地址?
- 2021年美容师(初级)报名考试及美容师(初级)模拟考试题
- 院士大牛们一年N篇7点以上SCI的诀窍
- 速来!0元优质低代码平台抢先体验
- 表单和servlet在idea中实现文件的上传
热门文章
- Python-100例(5-6) 排序斐波那契数列
- 关刀机器人_小学机器人活动总结
- python中if有几种使用方式_python 中if-else的多种简洁的写法
- 1.4-1.5 HBase部署及基本使用
- HDU1251 统计难题 trie树 简单
- 设置WordPress文章关键词自动获取,文章所属分类名称,描述自动获取文章内容,给文章的图片自动加上AlT标签...
- 10.1.2 Document类型【JavaScript高级程序设计第三版】
- Chapter 5 Exercises Problems
- Oracle中的Round和Trunc
- EclipsePHP Studio 2008快捷方式