2016-12-22 26 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的
  • 丝绸
  • ...

这个拦截器将允许访问。