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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容