springboot 结合Token的使用

Token和session的都是用于身份的验证,而session需要存储空间,Token并不需要,这次使用的主要是Token。
首先Token作为一个字符串,获取到验证信息后,会进行一个加密。
获取Token:

@Autowired
  TokenService tokenService;

  String token = tokenService.getToken(dbUser.getUsername(), dbUser.getPassword());

在服务层实现Token方法进行信息保存:

public String getToken(String name, String password) {

        String token="";
        token= JWT.create()
                    .withClaim("username", name)
                    .withClaim("generatetime",System.currentTimeMillis())
                    .withClaim("exptime",1000*1*60*60)
                .sign(Algorithm.HMAC256(password));// 以 password 作为 token 的密钥
        return token;
    }

这里将name赋值给username,存到token:

.withClaim("username", name)

对密码进行加密:

.sign(Algorithm.HMAC256(password));// 以 password 作为 token 的密钥

Token是无状态的,不论是出于安全还是使用都有必要设置时间。
设置一个小时过期:

.withClaim("generatetime",System.currentTimeMillis())
                    .withClaim("exptime",1000*1*60*60)

取到用户信息后,需要进行校验:

username = JWT.decode(token).getClaim("username").asString();

获取到Token后封装为Json数据返回给前台:

 jsonObject.put("token", token);
      jsonObject.put("username",dbUser.getUsername());
      jsonObject.put("enpid", dbUser.getEnpid());
      jsonObject.put("roleid", dbUser.getRoleid());
      jsonObject.put("enpname", dbUser.getEnpname());

至此,Token的创建存数据已经完成。然后是对携带Token的判断,下一篇文章将介绍

2018/12/21

guanglu

你可能感兴趣的:(springboot 结合Token的使用)