小悟
这两天项目进入了后期,但是我们发现了一个重大的错误,因为前期对springboot的安全框架security的整合并没有太在意,加上这是我们第一次做前后端分离的项目,导致刚开始写登录注册的时候还是重心放在了session,但是这样子会造成一种安全隐患,虽然刚开始的时候学长学姐提醒我们要先把安全框架构建好,学习一下token,但是还是没有看的太重要,导致把这些只是简单的学习一下,这两天另一位同学一直在更改相关的问题,我也在对项目的接口进行完善和补充,今天晚上小伙伴吧相关的配置弄好了,然后我在帮忙把swagger全局token配置的时候遇到了一些问题,贴出来让大家一起看一下,不要犯和我一样的错误吧
想要实现的效果
根据相关的介绍在swaggerConfig.java文件下面加上了下面的代码
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeyList= new ArrayList();
apiKeyList.add(new ApiKey("token", "token", "header"));
return apiKeyList;
}
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
// .forPaths(PathSelectors.regex("^(?!auth).*$"))
.build());
return securityContexts;
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope
= new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return singletonList(
new SecurityReference("token", authorizationScopes));
}
但是无论何种的刷新重启,一直达不到这种效果,不能实现token的全局效果,最后才发现忘记在
createRestApi Ben目录下对类进行加载了,添加上之后就可对接口进行使用了,前端通过登录返回的接口的token,添加到这里就可以获取所有的接口了
.securitySchemes(securitySchemes()) .securityContexts(securityContexts());