摘要:一實現校驗實現校驗,可以通過或者,兩種方式都可以,在最外層,請求首先會通過,允許請求才會通過。
一、Springboot實現token校驗
SpringBoot實現token校驗,可以通過Filter或者HandlerInterceptor,兩種方式都可以,Filter在最外層,請求首先會通過Filter,filter允許請求才會通過Intercept。
下面以HandlerInterceptor實現為例
1.實現HandlerInterceptor,攔截請求校驗token
public class AuthenticationInterceptor implements HandlerInterceptor { private static final String URI_PASS_TOKEN = "/user/login"; @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception { log.info("authentication interceptor preHandle path:{} uri:{}",httpServletRequest.getServletPath(),httpServletRequest.getRequestURI()); // if ("OPTIONS".equalsIgnoreCase(httpServletRequest.getMethod())) { // return true; // } if (httpServletRequest.getRequestURI().endsWith(URI_PASS_TOKEN)) { return true; } //從http header里面獲取token String token = httpServletRequest.getHeader("token"); if (StringUtils.isEmpty(token)) { throw new AuthenticationException(CODE_AUTHENTICATION_FAILED,"token is empty"); } Algorithm algorithm = Algorithm.HMAC256(JwtConstant.TOKEN_CREATE_SECRET); JWTVerifier verifier = JWT.require(algorithm).build(); try { verifier.verify(token); }catch (Exception ex){ throw new AuthenticationException(CODE_AUTHENTICATION_FAILED,ex.getMessage()); } return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { } }
2.Configuration配置,實現自動注入
@Configuration public class InterceptorConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authenticationInterceptor()) .addPathPatterns("/**"); } @Bean public AuthenticationInterceptor authenticationInterceptor() { return new AuthenticationInterceptor(); } }二、前端調用 跨域 Preflight response is not successful
通過單元測試、PostMan測試都可以調同,但是vue前端怎么都無法調用,錯誤如下:
參考https://segmentfault.com/a/11...
發現是瀏覽器發出的OPTIONS預檢請求被HandlerInterceptor攔截了,因此在HandlerInterceptor添加如下代碼:
if ("OPTIONS".equalsIgnoreCase(httpServletRequest.getMethod())) { return true; }
對于options的請求不進行token檢測即可
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74120.html
摘要:首先遇到的就是跨域問題,但是在攜帶請求過程中出現了服務端獲取不到情況。瀏覽器將請求分成兩類簡單請求和非簡單請求。而瀏覽器對這兩種請求的處理是不一樣的。 背景 在一個前后端分離開發的項目中,使用SpringSecurity做安全框架,用JWT來實現權限管理提升RESTful Api的安全性。首先遇到的就是跨域問題,但是在攜帶jwt請求過程中出現了服務端獲取不到jwt情況。 跨域問題 在開...
摘要:首先遇到的就是跨域問題,但是在攜帶請求過程中出現了服務端獲取不到情況。瀏覽器將請求分成兩類簡單請求和非簡單請求。而瀏覽器對這兩種請求的處理是不一樣的。 背景 在一個前后端分離開發的項目中,使用SpringSecurity做安全框架,用JWT來實現權限管理提升RESTful Api的安全性。首先遇到的就是跨域問題,但是在攜帶jwt請求過程中出現了服務端獲取不到jwt情況。 跨域問題 在開...
摘要:我通過這篇文章把今天工作中遇到的跨域和請求的一個坑記錄下來。預檢請求機制的使用,是為了避免跨域請求對服務器的用戶數據產生未預期的影響。我使用了認證方式,這種方式不會造成該請求成為一個需要預檢的請求,所以最后跨域成功了。 我通過這篇文章把今天工作中遇到的HTTP跨域和OPTION請求的一個坑記錄下來。 場景是我需要在部署在域名a的Web應用里用JavaScript去消費一個部署在域名b的...
摘要:小程序官方流程圖如下,官方地址如果此圖理解不清楚的地方也可參看我的博客本文是對接微信小程序自定義登錄的一個完整例子實現,技術棧為。調用微信接口獲取和根據和自定義登陸態返回自定義登陸態給小程序端。 小程序官方流程圖如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login....
閱讀 2471·2021-11-24 09:39
閱讀 3517·2019-08-30 15:53
閱讀 593·2019-08-29 15:15
閱讀 2902·2019-08-26 13:23
閱讀 3211·2019-08-26 10:48
閱讀 642·2019-08-26 10:31
閱讀 747·2019-08-26 10:30
閱讀 2358·2019-08-23 18:32