系统安全性提升:统一api接口前缀
为了增强系统的安全性,我决定为所有接口添加一个统一的API前缀。这种做法不仅提高了接口的安全性,还便于管理。以下是具体的实现步骤:
拦截器配置调整
- 为
@RestController
注解的类自动添加/HomestayAPI
前缀。 - 调整所有拦截器的拦截规则,确保它们都包含
/HomestayAPI
前缀。
WebConfig.java
:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Resource
private JwtInterceptor jwtInterceptor;
// 为所有@RestController类的URL自动添加/HomestayAPI前缀
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.addPathPrefix("/HomestayAPI", clazz -> clazz.isAnnotationPresent(RestController.class));
}
// 添加自定义拦截器JwtInterceptor,并设置拦截规则
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(jwtInterceptor)
.addPathPatterns("/HomestayAPI/**")
.excludePathPatterns("/HomestayAPI/")
.excludePathPatterns("/HomestayAPI/login")
.excludePathPatterns("/HomestayAPI/register")
.excludePathPatterns("/HomestayAPI/files/**")
.excludePathPatterns("/files/**")
.excludePathPatterns("/HomestayAPI/type/**")
.excludePathPatterns("/HomestayAPI/getValidateCode")
.excludePathPatterns("/HomestayAPI/notice/selectAll")
.excludePathPatterns("/HomestayAPI/homestay/selectById")
.excludePathPatterns("/HomestayAPI/homestay/selectByName")
.excludePathPatterns("/HomestayAPI/comment/selectByTypeId");
}
}
RateLimiterConfig.java
:
@Configuration
@Component
public class RateLimiterConfig implements WebMvcConfigurer {
@Resource
RateLimiterInterceptor rateLimiterInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(rateLimiterInterceptor)
.addPathPatterns("/HomestayAPI/**");
}
}
前端脚本baseUrl调整
main.js
Vue.prototype.$baseUrl = process.env.VUE_APP_BASEURL + '/HomestayAPI' //所有URL都加上了‘/api’前缀
request.js
// 创建可一个新的axios对象
const request = axios.create({
//所有URL都加上了‘/api’前缀
baseURL: process.env.VUE_APP_BASEURL+ '/HomestayAPI' , // 后端的接口地址 ip:port/HomestayAPI
timeout: 30000, // 30s请求超时
})
图片上传路径调整
Constants.java
//图片上传路径
String imageUploadEndpoint = "http://localhost:9090/HomestayAPI/files/";
数据库中图片URL的调整
导出数据库数据
使用正则表达式更新URL
正则表达式:(?<!HomestayAPI\/)files
(?<!HomestayAPI\/)
: 负向零宽断言,表示确保files
前面不包含HomestayAPI/
files
: 匹配files
替换为:HomestayAPI/files
导入数据库数据
通过这些操作,给所有的接口都统一添加了/HomestayAPI
前缀,这不仅增强了安全性,还便于管理和维护。