账号密码校验完成后,给Redis里塞一个key,生成UUID是token作为key,拿user对象作为value,以后执行任何操作就单传token在接口做校验就行,保存时间可以自己设定
String token = UUID.randomUUID() + ""; //以token为key,user为value,存30分钟 System.out.println(token); redisTemplate.opsForValue().set(token, user, 30, TimeUnit.MINUTES);
简单的token登录
@ApiOperation(value = "token登录") @GetMapping(value = "/tokenLogin") public Map login(HttpServletRequest request) { String loginToken = request.getHeader("token"); Object user = redisTemplate.opsForValue().get(loginToken); if (user != null) { return ReUtil.result("获取登录用户成功", user); }else { return ReUtil.result("获取登录用户失败", user); } }
如果其他的操作接口需要校验,就在接口的参数中加上HttpServletRequest 来获取token做校验,第一次返回后前端保存token,每次请求接口就带上,放在请求头中
String token = request.getHeader("token"); if(Strings.isNullOrEmpty(token)){ return "token不能为空!"; }else { Object user = redisTemplate.opsForValue().get(token); if(null==user) { return "无权限执行此操作"; }else { //todo }
因为要用到redis,下面是redis的pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
另外yml配置文件也需要配置
redis: # redis数据库索引(默认为0),我们使用索引为6的数据库,避免和其他数据库冲突 database: 6 # redis服务器地址(默认为loaclhost) host: 192.168.110.199 # redis端口(默认为6379) port: 6379 # redis访问密码 password: 123456 # redis连接超时时间(单位毫秒) timeout: 60s # redis连接池配置 pool: min-idle: -1 max-idle: -1