目錄
一、概述
二、基本操作?
三、登陸檢查接口
一、概述
什么是Filter?
-
Filter表示過濾器,是 JavaWeb三大組件(Servlet、Filter、Listener)之一。
-
過濾器可以把對資源的請求攔截下來,從而實現(xiàn)一些特殊的功能
-
使用了過濾器之后,要想訪問web服務器上的資源,必須先經(jīng)過濾器,過濾器處理完畢之后,才可以訪問對應的資源。
-
-
過濾器一般完成一些通用的操作,比如:登錄校驗、統(tǒng)一編碼處理、敏感字符處理等。
二、基本操作?
下面我們通過Filter快速入門程序掌握過濾器的基本使用操作:
-
第1步,定義過濾器 :1.定義一個類,實現(xiàn) Filter 接口,并重寫其所有方法。
-
第2步,配置過濾器:Filter類上加 @WebFilter 注解,配置攔截資源的路徑。引導類上加 @ServletComponentScan 開啟Servlet組件支持。
-
第三部?當我們在Filter類上面加了@WebFilter注解之后,接下來我們還需要在啟動類上面加上一個注解@ServletComponentScan,通過這個@ServletComponentScan注解來開啟SpringBoot項目對于Servlet組件的支持。
三、登陸檢查接口
具體流程
我們要完成登錄校驗,主要是利用Filter過濾器實現(xiàn),而Filter過濾器的流程步驟:
?
基于上面的業(yè)務流程,我們分析出具體的操作步驟:
-
獲取請求url
-
判斷請求url中是否包含login,如果包含,說明是登錄操作,放行
-
獲取請求頭中的令牌(token)
-
判斷令牌是否存在,如果不存在,返回錯誤結果(未登錄)
-
解析token,如果解析失敗,返回錯誤結果(未登錄)
-
放行文章來源:http://www.zghlxwxcb.cn/news/detail-665462.html
代碼實現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-665462.html
@Slf4j
@WebFilter(urlPatterns = "/*") //攔截所有請求
public class LoginCheckFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
System.out.printf("程序開始");
//強制轉換為http協(xié)議的請求對象、響應對象 (轉換原因:要使用子類中特有方法)
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
// 1、獲取請求的url
String url = request.getRequestURI().toString();
log.info("請求路徑 {}",url);
// 2、判斷url是否包含login,有的話就放行
if(url.contains("login")){
// 放行請求
filterChain.doFilter(request,response);
return;
}
// 3、獲取請求頭的token
String token = request.getHeader("token");
log.info("請求頭的 {}",token);
// 4、判斷令牌是否存在,不存在,相應錯誤信息
if(!StringUtils.hasLength(token)){
log.info("令牌不存在");
// 相應錯誤信息
Result error = Result.error("NOT_logion");
String notLogin = JSONObject.toJSONString(error);
response.getWriter().write(notLogin);
return;
}
// 5、解析token,如果解析失敗,則返回錯誤的結果
try{
JwtUtils.parseJWT(token);
}catch (Exception e){
e.printStackTrace();
// 相應錯誤信息
Result error = Result.error("NOT_logion");
String notLogin = JSONObject.toJSONString(error);
response.getWriter().write(notLogin);
return;
}
// 6、 放行
log.info("令牌和法,放行");
filterChain.doFilter(request,response);
}
}
到了這里,關于登陸接口的的Filter過濾的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!