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

临淄哪里做网站睢县做网站

临淄哪里做网站,睢县做网站,沈阳信息工程学校中专,新闻热点前言#xff1a; 在现代的Web应用中#xff0c;安全和高效的用户身份验证机制是至关重要的。本文将深入探讨基于令牌的用户登录会话机制#xff0c;特别是在使用Redis进行会话管理的情景。通过这一案例实战#xff0c;我们将了解令牌如何在用户身份验证过程中发挥核心作用 在现代的Web应用中安全和高效的用户身份验证机制是至关重要的。本文将深入探讨基于令牌的用户登录会话机制特别是在使用Redis进行会话管理的情景。通过这一案例实战我们将了解令牌如何在用户身份验证过程中发挥核心作用并确保用户会话的安全性和有效性。 令牌检查与Redis验证 用户平时会访问我们的系统在处理任何一个请求之前必须检查一下这个请求是否带上了一个令牌。如果带了一个令牌那么此时就必须在Redis里检查一下这个令牌是否有在Redis里合法的、有效的一个session会话。如果有这个session会话此时就可以允许这个请求被处理因为说明这个人之前已经登录过我们的系统了登录过后才会在Redis里放一个有效的session会话如果说没有这个session的话此时就会导致用户必须强制被迫登录。 用户登录与令牌发放 如果用户登录通过之后就会返回给浏览器或者客户端一块令牌同时在Redis里初始化好一个session会话。后续客户端就会在指定时间范围内发送请求的时候带上一块令牌每次令牌和服务器端的session校验通过就可以执行请求。 令牌过期与强制登录 过一段时间过后服务端的Redis里的session会话就会过期。过期了之后又会导致你必须要重新登录虽然你可能带上了令牌但是一检查发现这块令牌对应的Redis里的session已经过期了。 Redis命令操作 hset把用户id和令牌存储一下hset把用户id和过期令牌过期时间存储一下。每次访问系统都让用户带上令牌如果令牌不存在就是没登录hget获取存储的令牌和过期时间如果令牌过期了也要强制登录如果令牌校验通过这次请求就可以通过。如果令牌要是过期了就用hdel把存储的令牌和过期时间都删了。 代码 package com.example.session;import redis.clients.jedis.Jedis;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; import java.util.UUID;/*** 示例用户会话管理*/ public class UserSessionManager {private Jedis redisClient new Jedis(127.0.0.1);/*** 验证会话是否有效* param sessionToken 会话令牌* return 有效性*/public boolean checkSessionValidity(String sessionToken) throws Exception {if(sessionToken null || sessionToken.isEmpty()) {return false;}String sessionData redisClient.hget(user_sessions, session_token: sessionToken);if(sessionData null || sessionData.isEmpty()) {return false;}String sessionExpiry redisClient.hget(session_expiration_times, session_token: sessionToken);if(sessionExpiry null || sessionExpiry.isEmpty()) {return false;}SimpleDateFormat dateFormat new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);Date sessionExpiryDate dateFormat.parse(sessionExpiry);if(new Date().after(sessionExpiryDate)) {return false;}return true;}/*** 用户登录* param user 用户名* param pass 密码* return 会话令牌*/public String loginUser(String user, String pass) {System.out.println(登录用户 user , 密码 pass);long userId new Random().nextInt(100000);String token UUID.randomUUID().toString().replace(-, );initializeSession(userId, token);return token;}/*** 初始化用户会话* param userId 用户ID* param token 会话令牌*/public void initializeSession(long userId, String token) {SimpleDateFormat dateFormat new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);Calendar calendar Calendar.getInstance();calendar.add(Calendar.HOUR, 24);String sessionExpiry dateFormat.format(calendar.getTime());redisClient.hset(user_sessions, session_token: token, String.valueOf(userId));redisClient.hset(session_expiration_times, session_token: token, sessionExpiry);}public static void main(String[] args) throws Exception {UserSessionManager sessionManager new UserSessionManager();boolean isValid sessionManager.checkSessionValidity(null);System.out.println(初次访问会话验证 (isValid ? 通过 : 不通过));String sessionToken sessionManager.loginUser(alice,password123);System.out.println(登录后获得令牌 sessionToken);isValid sessionManager.checkSessionValidity(sessionToken);System.out.println(再次访问会话验证 (isValid ? 通过 : 不通过));} }
http://www.dnsts.com.cn/news/30013.html

相关文章:

  • 北京网站备案要求吗蝶恋直播视频在线观看
  • 漯河市源汇区网站建设阿里巴巴网站怎么做才能排第一
  • 哪个网站做h5比较好看搜索网络如何制造
  • 宝塔做两个网站6域名wordpress
  • 网站建设实训总结保险网站建设的总体目标
  • wordpress灯箱代码天津seo霸屏
  • 萝岗公司网站建设运涛网站建设
  • 做网站的带宽多少钱苏州seo优化外包公司
  • dede网站源码 如何白酒网站建设
  • 贵阳做网站kuhugz同一人做多个主体网站负责人
  • 建设银行网站改手机号机关单位建设网站 说明
  • 东莞网站制作搜索祥奔科技dedecms如何做网站
  • 网站更新升级衡阳城乡建设局网站
  • 个人博客网站制作流程wordpress编辑模板文字
  • 新版爱美眉网站源码设计师网站导航
  • 购物网站开发毕业设计小网站开发
  • 全站仪建站流程住房和城乡建设部官网证件查询
  • 网站基础模板学电脑培训班
  • wordpress 仿站命令代理网络服务器
  • php学校网站源码可以做兼职的网站
  • 泉州学校网站建设怎么做网站缩略图
  • 网络建设文章网站有做自由行包车的网站
  • 平面设计欣赏网站推荐电商平台都有哪些
  • 建设银行个人网上银行网站加载自己做都网站怎么发朋友圈
  • 做游戏ppt下载网站有哪些中企动力z云邮登录
  • 做自己头像的网站服务器网站扩容 一年1G价格
  • angular 做网站模块化网页制作软件
  • 做网站需要商标注册吗不学html直接学html5
  • 开发网站费用广州网站优化运营
  • 郑州网站建设价格做网站话术