仅允许移动设备访问REST API

时间:2016-12-22 12:58:31

标签: java rest spring-security spring-mobile

可以仅允许移动设备访问我的服务器端(Based on spring framework)上的REST API?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一个解决方案,不要说这是最好的方式,但无论如何它都有效。为此,我使用spring-mobile library

创建一个新的Interceptor,检查设备类型并知道是否允许他访问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的
  • ...

此拦截器将允许访问。