接口直接对外暴露

接口直接对外暴露

PIGCLOUD

📄 接口直接对外暴露 _ PIGCLOUD

](https://www.pig4cloud.com/)

产品

商业版

生态🔥

📄 接口直接对外暴露

pigcloud

# 现象

如果微服务接入了资源服务器,那么所有的资源都会被 spring security oauth 拦截,如果没有合法的 token,请求会被直接拒绝。如下图所示,会提示以下错误:

# 服务暴露

# 方法一、 @Inner 注解

1
2
3
4
5
6
7
8
9
10
// 如果配置在 controller 类上,则整个类的接口都会对外暴露
@Inner(value = false)
@GetMapping("/")
public R api() {
}




Copied!

特别说明:@Inner 注解作用于 Path Variable 风格的请求时需要特别注意,如下图中的 /{id} 会被识别为 /*,从而自动配置到 spring security 接口。这会导致其他接口虽然没有加 @Inner 注解,但也会对外暴露并且无法获取用户信息(如下图 ① 所示,已经暴露,并且也会造成 ② 接口对外暴露)。

    1. 慎用 Path Variable 请求加 @Inner 注解。
    1. 如果要使用,请确保将路径写得更长一些,并且检查 /XX/XX/* 是否会影响其他接口。

# 方法二、 nacos 配置如下属性

如果封装的接口(例如 swagger 等)不能加 @Inner 注解,可以参考下文中的配置文件声明。

==nacos/微服务对应的配置文件==

1
2
3
4
5
6
7
8
9
10
11
12
security:
oauth2:
client:
# 默认放行的 url,如果子模块重写了这里的配置,会被覆盖
ignore-urls:
- /actuator/**
- /v2/api-docs
- 目标接口的 Ant 表达式即可



Copied!

# 3. 暴露的接口无法获取用户信息

如果通过以上两种方式将接口设置为对外暴露(使用 @Inner 注解或配置文件形式),则当前接口下游的所有逻辑都 ==无法获取当前用户==(SecurityUtils.getUser() === null)。

📄 社交短信登录原理 📄 前端密码加密处理

  • 标题: 接口直接对外暴露
  • 作者: PIGCLOUD
  • 创建于 : 2024-01-01 00:00:00
  • 更新于 : 2025-09-22 14:27:28
  • 链接: https://anime-blog.52lin.site/📄 接口直接对外暴露 _ PIGCLOUD/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。