前后端分离项目,token的生成及存储至redis数据库

本文介绍了在一个前后端分离的项目中,如何使用MD5加密生成token,并将其存储到Redis数据库中。token结构为PC-32位加密用户名-用户ID-创建日期时间戳-6位随机数。同时涉及用户服务层和Controller层的设计。阅读后对相关流程会有深入理解。

MD5加密类

package common;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {

    public static String getMd5(String plainText,int length ) {
        String result = "";
        try {
            MessageDigest md= MessageDigest.getInstance("MD5");

            md.update(plainText.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if(i<0) i+= 256;
                if(i<16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            if(length==32) {
                //32位加密
                result = buf.toString();
            }else if(length==16) {
                //16位加密
                result = buf.toString().substring(8, 24);
            }else if(length==6){

                result = buf.toString().substring(0, 6);
            }else {
                return "";
            }
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }


}

redis数据库类

package service.serviceImpl;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class RedisAPI {

  
### 自动化生成代码的工具和方案 在前后端分离项目中,自动生成代码可以显著提高开发效率并减少手动编码中的错误。以下是几种常用的自动化代码生成工具和方案: #### 1. **MyBatis-Plus代码生成器** MyBatis-Plus 是 MyBatis 的增强工具,内置了代码生成器功能,能够根据数据库表结构自动生成实体类、Mapper接口、Service接口及其实现类等代码。 通过配置 `DataSource` 和模板文件,开发者可以快速生成符合项目需求的基础代码[^1]。 ```java // MyBatis-Plus 代码生成器示例 AutoGenerator mpg = new AutoGenerator(); mpg.setGlobalConfig(new GlobalConfig() .setOutputDir("src/main/java") // 输出目录 .setAuthor("Your Name")); // 作者名 mpg.setDataSource(new DataSourceConfig() .setUrl("jdbc:mysql://localhost:3306/your_database") .setUsername("root") .setPassword("password")); mpg.setStrategy(new StrategyConfig() .setInclude("table_name") // 指定生成的表 .setEntityLombokModel(true)); // 使用 Lombok 注解 mpg.execute(); // 执行代码生成 ``` #### 2. **RuoYi Vue 前后端分离版本** RuoYi 是一个基于 Spring Boot 和 Vue.js 的开源项目框架,支持代码生成模块。通过配置模板文件和数据库表结构,可以快速生成前端页面(Vue 组件)和后端接口代码。 如果遇到生成代码时出现 404 问题,需要检查 `pom.xml` 文件中是否正确添加了相关依赖[^3]。 ```xml <!-- RuoYi 测试模块依赖 --> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-test</artifactId> <version>${ruoyi.version}</version> </dependency> ``` #### 3. **JHipster** JHipster 是一个用于生成、开发和部署 Spring Boot + Angular/React/Vue.js 应用程序的开发平台。它支持通过命令行工具生成完整的项目结构,包括前端页面、后端接口以及数据库迁移脚本。 JHipster 提供了强大的代码生成能力,适合复杂的前后端分离项目。 ```bash # 安装 JHipster npm install -g generator-jhipster # 初始化项目 jhipster ``` #### 4. **Swagger Codegen** Swagger Codegen 是一个用于从 OpenAPI 规范生成客户端和服务端代码的工具。它可以生成多种语言的代码,包括 JavaJavaScript、Python 等。对于前后端分离项目,可以通过 Swagger 定义 API 接口文档,并生成对应的前端调用代码或后端实现代码。 ```bash # 使用 Swagger Codegen 生成代码 swagger-codegen generate \ -i http://example.com/api-docs \ -l java \ -o /path/to/output ``` #### 5. **前后端分离项目Token 自动续期方案** 在前后端分离项目中,Token 的管理是一个重要环节。为了实现 Token 的自动续期,通常采用以下逻辑: - 在登录成功后签发 Token 并设置有效期[^4]。 - 将 Token 存储在缓存中(如 Redis),并定期刷新缓存中的 Token。 - 前端请求时携带 Token,后端校验缓存中的 Token 是否有效。 ```java // 登录成功后签发 Token SysUser sysUser = userService.getUser(username, password); if (null != sysUser) { String token = JwtUtil.sign(sysUser.getUsername(), sysUser.getPassword()); redisTemplate.opsForValue().set(token, sysUser.getId(), 30, TimeUnit.MINUTES); // 缓存 Token } ``` --- ###
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值