2016-12-22 52 views
1

有可能只允許移動設備訪問我的服務器端的REST API (Based on spring framework)只允許訪問REST API移動設備

+0

不,這是不可能的。請訪問此鏈接:http://softwareengineering.stackexchange.com/questions/219028/how-to-safeguard-a-rest-api-for-only-trusted-mobile-applications。 – Bhavin

+0

@Bhavin是3年前,也許有些事情發生了變化(: – GVArt

回答

0

我剛剛找到了解決方案,不要說這是最好的方法,但無論如何它的工作原理。對於我使用spring-mobile library

創建一個新的攔截,檢查設備類型和了解,讓他訪問API與否,代碼:

public class MobileDeviceInterceptor extends HandlerInterceptorAdapter { 

    @Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
     Device d = new LiteDeviceResolver().resolveDevice(request); 
     if(!d.isNormal()) { 
      return true; 
     } 
     response.sendError(HttpServletResponse.SC_FORBIDDEN); 
     return false; 
    } 
} 

在配置類添加:

public class AppConfig extends WebMvcConfigurerAdapter { 
    ... 

    @Bean 
    public MobileDeviceInterceptor deviceTypeInterceptor(){ 
     return new MobileDeviceInterceptor(); 
    } 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(deviceTypeInterceptor()); 
    } 
} 

立即測試它,它的工作原理。

注意你要知道,如果User-Agent頭是在非移動平臺變成了移動的值,例如:

  • 安卓
  • iPad的
  • 絲綢
  • ...

這個攔截器將允許訪問。