登录成功后,使用用户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防止用户重复登录以及验证用户登录相关推荐

  1. java实现简单QQ登录界面验证_QQ登录界面实现

    正版现货ui设计必修课sketch ue光盘 191.8元 包邮 (需用券) 去购买 > Java实现QQ登录界面 QQ登录界面也是界面的一种,在实现界面时我们需要一些界面开发包,如: pack ...

  2. 注册华为云用户: 访问官网 https://huaweicloud.com/ 注册华为云用户(需手机号验证) 登录并完成实名认证 为账号充值不少于100元(不用时可提现

    3.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:注册华为云 1)访问官网,如图-1所示: 图-1 2)注册用户,如图-2所示: 图-2 2)登陆并完成实名认证,如图-3所示: 图-3

  3. Java AD域登录实现正常本地登录操作

    Java 域登录 实现 前言 新建一个测试类 AD域的userName和passWord身份验证成功之后返回 身份验证失败之后返回 验证成功后将之代入项目登录的位置,根据自己的登录接口和登陆逻辑来修改 ...

  4. java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份

    我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...

  5. 什么是单点登录,实现单点登录的三种方法

    单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得 ...

  6. android 客户端使用service处理用户名和密码验证,android透过webservice验证用户

    当前位置:我的异常网» Web前端 » android透过webservice验证用户 android透过webservice验证用户 www.myexceptions.net  网友分享于:2015 ...

  7. java 防止用户重复登录_JAVA 如何避免用户的重复登录

    展开全部 读懂下面代码,就知道如何实现 一个用户登陆 踢掉之前登陆的用户了//第一步 // 此监听62616964757a686964616fe4b893e5b19e31333337626166器用来 ...

  8. Java防止用户同一时间重复登录(包括异地登录)

    有时候我们在做登录模块过程中难免会遇到这种问题,即使我们给用户进行了多重判断,比如:用户名,管理员,验证码,一系列的判断- 你是否真正考虑到用户的体验,比如不能让用户在同一时间,同一个浏览器重复登录问 ...

  9. java判断用户是否在某一个区域登录_Java实现QQ登录和微博第三方登录

    来源:http://www.cnblogs.com/liuxianan转自公众号:Java后端 1. 前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了 QQ 和微博这 2 大常 ...

最新文章

  1. api zabbix 拓扑图 获取_zabbix网络拓扑图配置-Maps(示例代码)
  2. 1 jquery对checkbox的简单操作
  3. Apollo进阶课程 ⑦ | 高精地图的采集与生产
  4. 年轻人,你为什么来阿里做技术?
  5. 计算机控制用户自己编写什么软件吗,计算机控制软件技术基础.ppt
  6. Java版单链表讲解
  7. LINUX 文件夹打包
  8. 【Java】UDP Socket编程案例——文件传输聊天工具
  9. 软件基本功:重构工作的考虑及执行
  10. Java SSM开发大众点评后端 Mybatis实战商城项目
  11. 《计算机科学导论》学习笔记
  12. 水位传感器工作原理及应用
  13. mac iphone模拟器 真机 操作
  14. 简单易懂的现代魔法——Play Framework攻略1
  15. Mac浏览器提示安装证书错误,如何修复 Mac 上的无效证书错误
  16. 如何获取计算机网络地址,如何查看电脑获取到的IP地址?
  17. 2021年美容师(初级)报名考试及美容师(初级)模拟考试题
  18. 院士大牛们一年N篇7点以上SCI的诀窍
  19. 速来!0元优质低代码平台抢先体验
  20. 表单和servlet在idea中实现文件的上传

热门文章

  1. Python-100例(5-6) 排序斐波那契数列
  2. 关刀机器人_小学机器人活动总结
  3. python中if有几种使用方式_python 中if-else的多种简洁的写法
  4. 1.4-1.5 HBase部署及基本使用
  5. HDU1251 统计难题 trie树 简单
  6. 设置WordPress文章关键词自动获取,文章所属分类名称,描述自动获取文章内容,给文章的图片自动加上AlT标签...
  7. 10.1.2 Document类型【JavaScript高级程序设计第三版】
  8. Chapter 5 Exercises Problems
  9. Oracle中的Round和Trunc
  10. EclipsePHP Studio 2008快捷方式