766 Star 6.6K Fork 1.4K

GVP萧明 / knife4j

 / 详情

2.0.7版中,SecurityContext的forPaths无效

已完成
创建于  
2020-11-04 11:09

如题,按照官方Authorize 配置的说明,forPaths中无论怎么设置,都相当于是全量接口,这样就会造成不知道哪些接口不需要Authorize信息。。。

建议在所有接口上添加需要Authorize或不需要Authorize的标识,就像Swagger-UI一样有一把锁,比较直观

private List<SecurityContext> securityContexts() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverywhere");
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = authorizationScope;

    SecurityReference securityReference = new SecurityReference(Constants.ACCESS_TOKEN_KEY, authorizationScopes);

    //比如这里,我这样设置以后,还是所有接口都需要认证
    return Collections.singletonList(
            SecurityContext.builder()
                    .securityReferences(Collections.singletonList(securityReference))
                    .forPaths(PathSelectors.regex(".*create-captcha.*"))
                    .build()
    );
}

按以下配置后,获取验证码的接口要求填写AccessToken:
输入图片说明

但其它的接口也需要AccessToken:
输入图片说明

在配置了上面的forPaths后,Swagger-UI中,接口上会有一个解锁和上锁的标志,说明接口需要先授权。但Knife4J中就不知道是否需要授权。就像这种效果:
输入图片说明

评论 (3)

TeRny 创建了任务
TeRny 关联仓库设置为萧明/knife4j
TeRny 修改了描述
展开全部操作日志

把需要的效果图贴出来

TeRny 修改了描述
TeRny 修改了描述

把需要的效果图贴出来

@萧明 已贴出来

恩,这个可以加

萧明 添加了
 
enhancement
标签
萧明 任务状态待办的 修改为进行中
萧明 通过xiaoym/knife4j Pull Request !34任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
118100 xiaoym 1578918321 4831300 terny 1617277698
Java
1
https://gitee.com/xiaoym/knife4j.git
git@gitee.com:xiaoym/knife4j.git
xiaoym
knife4j
knife4j

搜索帮助