1.在until下添加JWTUtils.java
package com.xiaoguan.untils;
import com.xiaoguan.model.entity.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JWTUtils {
private static final long EXPIRE = 60000*60*24*7;
private static final String SECRET="xiaoguan.com";
private static final String TOKEN_PREFIX="xiaoguan";
private static final String SUBJECT = "xiaoguan";
public static String geneJsonWebToken(User user){
String token = Jwts.builder().setSubject(SUBJECT)
.claim("head_img",user.getHeadImg())
.claim("id",user.getId())
.claim("name",user.getName())
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
.signWith(SignatureAlgorithm.HS256,SECRET).compact();
token = TOKEN_PREFIX + token;
return token;
}
public static Claims checkJWT(String token){
try {
final Claims claims = Jwts.parser().setSigningKey(SECRET)
.parseClaimsJws(token.replace(TOKEN_PREFIX,"")).getBody();
return claims;
}catch (Exception e){
return null;
}
}
}
2.在UserMapper.xml下添加
<select id="findByPhoneAndPwd" resultType="User">
select *from user where phone=#{phone} and pwd=#{pwd}
</select>
3.在UserMapper.java下添加
User findByPhoneAndPwd(@Param("phone") String phone,@Param("pwd") String pwd);
4.在UserService.java下添加
String findByPhoneAndPwd(String phone,String pwd);
5.在UserServiceImpl.java下添加
@Override
public String findByPhoneAndPwd(String phone, String pwd) {
User user = userMapper.findByPhoneAndPwd(phone,CommonUtils.MD5(pwd));
if(user == null){
return null;
}else {
String token = JWTUtils.geneJsonWebToken(user);
return token;
}
}
6.在UserController.java下添加
@PostMapping("login")
public JsonData login(@RequestBody LoginRequest loginRequest){
String token = userService.findByPhoneAndPwd(loginRequest.getPhone(),loginRequest.getPwd());
return token == null ? JsonData.buildError("登录失败,账号密错误"):JsonData.buildSuccess(token);
}
7.在测试类中测试
package com.xiaoguan;
import com.xiaoguan.model.entity.User;
import com.xiaoguan.untils.JWTUtils;
import io.jsonwebtoken.Claims;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class ProjectApplicationTests {
@Test
void contextLoads() {
}
@Test
public void testGeneJwt(){
User user = new User();
user.setId(24);
user.setName("peiling");
user.setHeadImg("png");
String token = JWTUtils.geneJsonWebToken(user);
System.out.println(token);
try {
Thread.sleep(4000L);
}catch (InterruptedException e){
e.printStackTrace();
}
Claims claims = JWTUtils.checkJWT(token);
System.out.println(claims.get("name"));
}
}