简单的token用户登录实现,接口权限校验


账号密码校验完成后,给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.bootgroupId>
            <artifactId>spring-boot-starter-data-redisartifactId>
        dependency>
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-pool2artifactId>
        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