0,主要解決兩個問題:1身份驗證(防止httpclient拼接請求),2權限控制
1,身份驗證使用jwt,在java就是jjwt
jwt可以比較好的整合restful,對無狀態客戶端比較友好,(用session和cookie是有狀態的,session由服務器維護,如果項目大了使用了分布式,
就一個session綁在一台特定的服務器上,不能很好的均衡負載
流程圖:

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,基於角色權限控制

