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

临淄哪里做网站网站开通银行支付接口

临淄哪里做网站,网站开通银行支付接口,下载cmsv6,东莞网络营销外包有哪些前言: 在现代的Web应用中,安全和高效的用户身份验证机制是至关重要的。本文将深入探讨基于令牌的用户登录会话机制,特别是在使用Redis进行会话管理的情景。通过这一案例实战,我们将了解令牌如何在用户身份验证过程中发挥核心作用&…

前言:
在现代的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.15wanjia.com/news/187609.html

相关文章:

  • 东莞网站制作的公司做窗帘的效果图网站
  • 兰州市城乡建设局网站珠宝公司网站模版
  • 全国最大的网站建设公司排名做引流去那些网站好
  • 汝州市住房和城乡规划建设局网站seo怎么提升关键词的排名
  • 殡葬网站建设腾讯云lamp wordpress
  • 网站运营知识建站套餐
  • 关于加强学校网站建设的通知装修公司网站
  • 怎么做网站平台教程知乎 拒绝 朋友 做网站
  • 网站建设设计规划书用wordpress修改现有网页
  • 对网站做数据统计的目的是什么网站建设计划书300
  • 临沂市建设局官方网站网站建设捌金手指下拉二六
  • 家电维修企业网站源码温州建设局网站
  • 彩票网站的代理怎么做上海做网站的公司多少钱
  • 网站索引下降如何解决中国推广网
  • 中国百强城市榜单公布青岛seo百科
  • 模板网站建设流程图重庆企业网站推广公司
  • 人才网站怎么做wordpress now 1.5
  • 馆陶网站建设建网站知识
  • 全球最大互联网公司排名搜索引擎优化是指什么
  • 房产类网站建设网站维护都要做什么
  • 做像淘宝这样的购物网站要多少钱展厅设计费
  • 灯具网站建设商务网站设计制作
  • 建立网站的步骤 实湖南岚鸿九江做网站
  • 内网建立网站微友圈推广平台怎么加入
  • 怎么看网站做没做备案司法局网站开发方案
  • 成绩分析智能网站怎么做12306铁路网站开发语言
  • 网站代码怎么看溧阳网站建设价格
  • 网站开发工程师优势网站建设烟台
  • 怎样找到工厂直招网站社交电商平台
  • 做服装团购网站网站建设过程中什么最重要