可以仅允许移动设备访问我的服务器端(Based on spring framework)
上的REST API?
答案 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
标头是否已更改为移动设备值,例如:
此拦截器将允许访问。