Java 仅允许移动设备访问REST API
在我的服务器端只允许移动设备访问REST API是可能的Java 仅允许移动设备访问REST API,java,rest,spring-security,spring-mobile,Java,Rest,Spring Security,Spring Mobile,在我的服务器端只允许移动设备访问REST API是可能的(基于spring框架)?我刚刚找到了一个解决方案,不要说这是最好的方法,但无论如何它都是有效的。我用的就是这个 创建一个新的拦截器,检查设备类型并知道是否允许他访问API,代码: public class MobileDeviceInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletReq
(基于spring框架)
?我刚刚找到了一个解决方案,不要说这是最好的方法,但无论如何它都是有效的。我用的就是这个
创建一个新的拦截器,检查设备类型并知道是否允许他访问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());
}
}
现在就测试它,它就可以工作了
注意您必须知道用户代理
标题是否在非移动平台上更改为移动值,例如:
- 安卓
- ipad
- 丝
这个拦截器将允许访问。我刚刚找到了一个解决方案,不要说这是最好的方法,但无论如何它是有效的。我用的就是这个 创建一个新的拦截器,检查设备类型并知道是否允许他访问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());
}
}
现在就测试它,它就可以工作了
注意您必须知道用户代理
标题是否在非移动平台上更改为移动值,例如:
- 安卓
- ipad
- 丝
此拦截器将允许访问。不,这是不可能的。请访问此链接:。@Bhavin这是3年前的事,可能有什么变化(:不,这是不可能的。请访问此链接:。@Bhavin这是3年前的事,可能有什么变化(: