JwtUtils 的集成

倒包:

<!-- JWT依賴--><dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version></dependency>

<!-- no more than 2.3.3--><dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.3</version></dependency>

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId></dependency>


工具類:

public class JwtUtils {

private static String signKey ="yixiatech";

private static Long expire =1626662400000L;

/**

? ? * 生成JWT令牌

? ? * @param claims JWT第二部分負(fù)載 payload 中存儲(chǔ)的內(nèi)容

? ? * @return

*/

? ? public static String generateJwt(Map claims){

String jwt =Jwts.builder()

.addClaims(claims)

.signWith(SignatureAlgorithm.HS256,signKey)

.setExpiration(new Date(System.currentTimeMillis() +expire))

.compact();

return jwt;

}

/**

? ? * 解析JWT令牌

? ? * @param jwt JWT令牌

? ? * @return JWT第二部分負(fù)載 payload 中存儲(chǔ)的內(nèi)容

? ? */

? ? public static Claims parseJWT(String jwt){

Claims claims =Jwts.parser()

.setSigningKey(signKey)

.parseClaimsJws(jwt)

.getBody();

return claims;

}

}

控制器代碼:

@Slf4j

@RestController

public class LoginController {

@Autowired

? ? private EmpService empService;

@PostMapping("/login")

public Result login(@RequestBody Emp emp){

Emp e =empService.login(emp);

log.info("員工登錄: {}",e);

//登錄成功,生成令牌,下發(fā)令牌

? ? ? ? if (e !=null){

Mapclaims =new HashMap<>();

claims.put("id",e.getEmpId());

claims.put("name",e.getName());

claims.put("username",e.getUsername());

String jwt =JwtUtils.generateJwt(claims);//jwt包含了當(dāng)前登錄的員工信息

? ? ? ? ? ? return Result.success(jwt);

}

//登錄失敗, 返回錯(cuò)誤信息

? ? ? ? return Result.error("用戶名或密碼錯(cuò)誤");

}

}

當(dāng)我們?cè)贔ilter類上面加了@WebFilter注解之后,接下來我們還需要在啟動(dòng)類上面加上一個(gè)注解@ServletComponentScan,通過這個(gè)@ServletComponentScan注解來開啟SpringBoot項(xiàng)目對(duì)于Servlet組件的支持。

具體操作的類

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import java.io.IOException;

@WebFilter(urlPatterns ="/*")

public class EmpFilter implements Filter {

@Override //初始化方法, 只調(diào)用一次

? ? public void init(FilterConfig filterConfig)throws ServletException {

System.out.println("init 初始化方法執(zhí)行了");

}

@Override //攔截到請(qǐng)求之后調(diào)用, 調(diào)用多次

? ? public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException {

System.out.println("Demo 攔截到了請(qǐng)求...放行前邏輯");

chain.doFilter(request,response);

System.out.println("Demo 攔截到了請(qǐng)求...放行后邏輯");

}

@Override //銷毀方法, 只調(diào)用一次

? ? public void destroy() {

System.out.println("destroy 銷毀方法執(zhí)行了");

}

}

對(duì)象轉(zhuǎn)json

依賴

<!--fastJSON--><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version></dependency>

代碼

Result error = Result.error("NOT_LOGIN");

//手動(dòng)轉(zhuǎn)換 對(duì)象--json --------> 阿里巴巴fastJSON

String notLogin = JSONObject.toJSONString(error);


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容