????(1)tensquare_common工程引入依賴(考慮到工具類的通用性)
????????<dependency>
? ? ? ? ? ? <groupId>io.jsonwebtoken</groupId>
? ? ? ? ? ? <artifactId>jjwt</artifactId>
? ? ? ? ? ? <version>0.6.0</version>
? ? ? ? </dependency>
???????? <dependency>
? ? ? ? ? ? <groupId> org.springframework.boot </groupId>
? ? ? ? ? ? <artifactId> spring-boot-configuration-processor </artifactId>
? ? ? ? ? ? <optional> true </optional>
? ? ? ? </dependency>
(2)修改tensquare_common工程,創(chuàng)建util.JwtUtil
@ConfigurationProperties("jwt.config")
public class JwtUtil {
? ? private String key ;
? ? private long ttl ;//一個(gè)小時(shí)
? ? public String getKey() {
? ? ? ? return key;
? ? }
? ? public void setKey(String key) {
? ? ? ? this.key = key;
? ? }
? ? public long getTtl() {
? ? ? ? return ttl;
? ? }
? ? public void setTtl(long ttl) {
? ? ? ? this.ttl = ttl;
? ? }
? ? /**
? ? * 生成JWT
? ? *
? ? * @param id
? ? * @param subject
? ? * @return
? ? */
? ? public String createJWT(String id, String subject, String roles) {
? ? ? ? long nowMillis = System.currentTimeMillis();
? ? ? ? Date now = new Date(nowMillis);
? ? ? ? JwtBuilder builder = Jwts.builder().setId(id)
? ? ? ? ? ? ? ? .setSubject(subject)
? ? ? ? ? ? ? ? .setIssuedAt(now)
? ? ? ? ? ? ? ? .signWith(SignatureAlgorithm.HS256, key).claim("roles", roles);
? ? ? ? if (ttl > 0) {
? ? ? ? ? ? builder.setExpiration( new Date( nowMillis + ttl));
? ? ? ? }
? ? ? ? return builder.compact();
? ? }
? ? /**
? ? * 解析JWT
? ? * @param jwtStr
? ? * @return
? ? */
? ? public Claims parseJWT(String jwtStr){
? ? ? ? return? Jwts.parser()
? ? ? ? ? ? ? ? .setSigningKey(key)
? ? ? ? ? ? ? ? .parseClaimsJws(jwtStr)
? ? ? ? ? ? ? ? .getBody();
? ? }
}
(3) 修改改tensquare_user工程的application.yml, 添加配置
jwt:?
config:?
key: eknaij
? ? ttl: 360000
(1)配置bean .修改tensquare_user工程UserApplication類
@Bean public JwtUtil jwtUtil(){ return new util.JwtUtil(); }
(2)修改AdminController的login方法
@Autowired
private JwtUtil jwtUtil;
/**
* 管理員登錄
* @param loginMap
* @return
*/
@RequestMapping(value="/login",method=RequestMethod.POST)
public Result login(@RequestBody Map<String,String> loginMap){
Admin admin = adminService.findByLoginnameAndPassword(loginMap.get("loginname"), loginMap.get("password"));
if(admin!=null){
//生成token
String token = jwtUtil.createJWT(admin.getId(), admin.getLoginname(), "admin");
Map map=new HashMap();
map.put("token",token);
map.put("name",admin.getLoginname());//登陸名
return new Result(true,StatusCode.OK,"登陸成功",map);
}else{
return new Result(false,StatusCode.LOGINERROE,"用戶名或密碼錯(cuò)誤",null);
}
}
測(cè)試運(yùn)行結(jié)果:
完美結(jié)束