亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解spring cloud ouath2中的資源服務器

 更新時間:2021年02月11日 08:17:01   作者:小黃雞1992  
這篇文章主要介紹了spring cloud ouath2中的資源服務器的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

資源服務器就是業(yè)務服務 如用戶服務,訂單服務等 第三方需要到資源服務器調用接口獲取資源

ResourceServerConfig

ResourceServerConfig是資源服務器的核心配置 用于驗證token 與網關配置相似

其中.antMatchers("/**").access("#oauth2.hasScope('user')") 需要oauth_client_details表的scope配合 意思是訪問所有資源 需要客戶端有scope需要有user

@Configuration
@EnableResourceServer // 標識為資源服務器,請求服務中的資源,就要帶著token過來,找不到token或token是無效訪問不了資源
@EnableGlobalMethodSecurity(prePostEnabled = true) // 開啟方法級別權限控制
public class ResourceServerConfig extends ResourceServerConfigurerAdapter implements CommandLineRunner {
 
 private final static Logger logger = LoggerFactory.getLogger(ResourceServerConfig.class);
 
 public static final String RESOURCE_ID = "user";
 
 /**
 * 權限不足返回給前端json
 */
 @Autowired
 private CustomAccessDeniedHandlerConfig customAccessDeniedHandlerConfig;
 
 @Autowired
 private TokenStore tokenStore;
 
 /**
 * token無效返回前段json
 */
 @Autowired
 private AuthExceptionEntryPointConfig authExceptionEntryPointConfig;
 
 @Override
 public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
 // 當前資源服務器的資源id,認證服務會認證客戶端有沒有訪問這個資源id的權限,有則可以訪問當前服務
 resources.tokenStore(tokenStore).resourceId(RESOURCE_ID)
  // token無效異常的處理
  .authenticationEntryPoint(authExceptionEntryPointConfig)
  // 權限不足異常處理類
  .accessDeniedHandler(customAccessDeniedHandlerConfig)
  // 會話機制stateless開啟
  .stateless(true);
 }
 
 @Override
 public void configure(HttpSecurity http) throws Exception {
 http.sessionManagement()
  // SpringSecurity不會使用也不會創(chuàng)建HttpSession實例 因為整個oauth2后使用token
  .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
  // 開放swagger請求
  .antMatchers("/swagger-ui.html", "/webjars/**", "/swagger-resources/**","/v2/**").permitAll()
  // 所有請求,都需要有all范圍(scope)
  .antMatchers("/**").access("#oauth2.hasScope('user')").
  anyRequest().authenticated().and().csrf()
  .disable();
 }
 
 @Bean
 public PasswordEncoder passwordEncoder() {
 return new BCryptPasswordEncoder();
 }
}

AuthExceptionEntryPointConfig,CustomAccessDeniedHandlerConfig

用于異常返回前端json

@Component
public class CustomAccessDeniedHandlerConfig implements AccessDeniedHandler {
 
 @Override
 public void handle(HttpServletRequest request, HttpServletResponse response,
 AccessDeniedException accessDeniedException) throws IOException, ServletException {
 response.setStatus(HttpStatus.OK.value());
 response.setHeader("Content-Type", "application/json;charset=UTF-8");
 try {
  Result result = new Result(403, "權限不足");
  response.getWriter().write(new ObjectMapper().writeValueAsString(result));
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
}
@Component
public class AuthExceptionEntryPointConfig implements AuthenticationEntryPoint{
 
 private final static Logger logger = LoggerFactory.getLogger(AuthExceptionEntryPointConfig.class);
 
 @Value("${security.redirect-url}")
 private String redirectUrl;
 
 @Override
 public void commence(HttpServletRequest request, HttpServletResponse response,
 AuthenticationException authException) {
 Throwable cause = authException.getCause();
 response.setStatus(HttpStatus.OK.value());
 response.setHeader("Content-Type", "application/json;charset=UTF-8");
 Result result;
 try {
  if (cause instanceof InvalidTokenException) {
  result = new Result(402, "認證失敗,無效或過期token");
  response.getWriter().write(new ObjectMapper().writeValueAsString(result));
  } else {
  result = new Result(401, "認證失敗,沒有攜帶token");
  response.sendRedirect(redirectUrl);
  }
 
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
}

TokenConfig

不多說

@Configuration
public class TokenConfig{
 
 /**
 * 使用redis存儲
 */
 @Autowired
 private RedisConnectionFactory redisConnectionFactory;
 
 @Bean
 public TokenStore tokenStore() {
 return new RedisTokenStore(redisConnectionFactory);
 }
 
}

application.yml

那么小伙伴又問了 既然網關驗證token的有效性 那么資源服務器是不是就不用驗證啦 答案是否 因為不添加配置 會報錯 同樣需要在application中添加以下配置

其他配置也spirng boot為準 這里不多說

security:
 oauth2:
 client:
 client-id: user-vue
 client-secret: 1234
 resource:
 token-info-uri: http://localhost:8001/oauth/check_token

到此這篇關于spring cloud ouath2中的資源服務器的文章就介紹到這了,更多相關spring cloud ouath2資源服務器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java計算兩個日期之前的天數實例(排除節(jié)假日和周末)

    java計算兩個日期之前的天數實例(排除節(jié)假日和周末)

    下面小編就為大家?guī)硪黄猨ava計算兩個日期之前的天數實例(排除節(jié)假日和周末)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • java jpa查詢沒有id表的方法

    java jpa查詢沒有id表的方法

    本文主要介紹了java jpa查詢沒有id表的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • java中BIO、NIO、AIO都有啥區(qū)別

    java中BIO、NIO、AIO都有啥區(qū)別

    這篇文章主要介紹了java中BIO、NIO、AIO都有啥區(qū)別,IO模型就是說用什么樣的通道進行數據的發(fā)送和接收,Java共支持3種網絡編程IO模式:BIO,NIO,AIO,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 解決MyBatis-Plus使用動態(tài)表名selectPage不生效的問題

    解決MyBatis-Plus使用動態(tài)表名selectPage不生效的問題

    這篇文章主要介紹了如惡化解決MyBatis-Plus使用動態(tài)表名selectPage不生效的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • hashtable桶數通常會取一個素數分析

    hashtable桶數通常會取一個素數分析

    這篇文章主要介紹了hashtable桶數通常會取一個素數分析的相關資料,需要的朋友可以參考下
    2016-12-12
  • springboot項目啟動慢的問題排查方式

    springboot項目啟動慢的問題排查方式

    這篇文章主要介紹了springboot項目啟動慢的問題排查方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • spring?eurake中使用IP注冊及問題小結

    spring?eurake中使用IP注冊及問題小結

    在開發(fā)spring?cloud的時候遇到一個很奇葩的問題,就是服務向spring?eureka中注冊實例的時候使用的是機器名,然后出現localhost、xxx.xx等這樣的內容,這篇文章主要介紹了spring?eurake中使用IP注冊,需要的朋友可以參考下
    2023-07-07
  • Java中IO流使用FileWriter寫數據基本操作詳解

    Java中IO流使用FileWriter寫數據基本操作詳解

    這篇文章主要介紹了Java中IO流FileWriter寫數據操作,FileWriter類提供了多種寫入字符的方法,包括寫入單個字符、寫入字符數組和寫入字符串等,它還提供了一些其他的方法,如刷新緩沖區(qū)、關閉文件等,需要的朋友可以參考下
    2023-10-10
  • java實現掃雷游戲入門程序

    java實現掃雷游戲入門程序

    這篇文章主要為大家詳細介紹了java實現掃雷游戲入門程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Spring-boot集成pg、mongo多數據源過程詳解

    Spring-boot集成pg、mongo多數據源過程詳解

    這篇文章主要介紹了Spring-boot集成pg、mongo多數據源過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10

最新評論