0,主要解决两个问题:1身份验证(防止httpclient拼接请求),2权限控制

1,身份验证使用jwt,在java就是jjwt

  jwt可以比较好的整合restful,对无状态客户端比较友好,(用session和cookie是有状态的,session由服务器维护,如果项目大了使用了分布式,

  就一个session绑在一台特定的服务器上,不能很好的均衡负载

流程图:

基于jwt和角色的访问控制解决方案

jwt  quick start

Key key = MacProvider.generateKey();

String compactJws = Jwts.builder()
  .setSubject("Joe")
  .signWith(SignatureAlgorithm.HS512, key)
  .compact();

上面的compactJws就会产生下面的token

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJKb2UifQ.yiV1GWDrQyCeoOswYTf_xvlgsnaVVYJM0mU6rkmRBf2T1MBl3Xh2kZii0Q9BdX5-G0j25Qv2WF4lA6jPl5GKuA

验证:

try {

    Jwts.parser().setSigningKey(key).parseClaimsJws(compactJws);

    //OK, we can trust this JWT

} catch (SignatureException e) {

    //don't trust the JWT!
}

2,基于角色权限控制

基于jwt和角色的访问控制解决方案

 

相关文章:

  • 2021-10-10
  • 2022-12-23
  • 2021-08-22
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-12
  • 2022-02-09
  • 2021-07-07
  • 2022-01-26
  • 2021-08-30
相关资源
相似解决方案