微服务网关访问控制的核心是统一收口身份校验与权限判断于网关层,避免各服务重复实现鉴权逻辑;需选用Spring Cloud Gateway,通过全局过滤器校验JWT/OAuth2令牌,提取用户信息并以请求头透传,结合路径级权限映射表实现细粒度控制,同时强化CORS、HTTPS、日志审计等安全配置。

微服务网关的访问控制,核心是把身份校验和权限判断统一收口到网关层,避免每个微服务重复实现登录、鉴权逻辑。配置重点不在“能不能做”,而在于“怎么配得稳、配得准、配得可维护”。
网关选型与基础路由配置
优先选用 Spring Cloud Gateway(非已停更的 Zuul)。它基于 WebFlux,性能好、扩展性强,且原生支持过滤器链和路由断言。
- 在 pom.xml 中引入关键依赖:
spring-cloud-starter-gateway、spring-cloud-starter-alibaba-nacos-discovery(若用 Nacos 注册中心)、spring-cloud-starter-loadbalancer - application.yml 中定义路由规则,目标地址用 lb://服务名(如
lb://userservice),由网关自动从注册中心拉取实例并负载均衡 - 每个路由配好 predicates(如
- Path=/user/**),明确哪些路径交给哪个服务处理
统一身份认证接入
网关本身不负责发 token,但必须能验证 token 合法性并提取用户身份信息(如 userId、roles)。
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 推荐对接独立的 Auth Server(如基于 OAuth2 或 JWT 的授权服务),网关通过 全局过滤器(GlobalFilter)拦截请求,校验 Authorization 头中的 Bearer Token
- 校验通过后,把解析出的用户信息(如 subject、roles)以请求头方式透传给下游服务,例如:
AddRequestHeader=userId, {userId}、AddRequestHeader=roles, {role1,role2} - 非法 token 或过期 token 直接返回 401,不放行;缺失 token 返回 401;签名错误或篡改返回 403
细粒度接口级权限控制
不能只靠“有登录”就放行,要控制“谁能在什么路径上做什么事”。理想做法是微服务自己声明权限,网关集中执行。
- 各微服务在启动时,将本服务所有带权限注解(如
@RequiresRole("ADMIN")或@RequiresPermission("order:delete"))的接口元数据,注册到共享存储(如 Redis) - 网关监听该存储变化,实时加载并缓存所有服务的 路径→权限要求 映射表
- 请求到达时,网关查表获取当前路径所需角色/权限,再比对请求头中携带的用户角色列表,匹配失败则返回 403
- 菜单类权限可同步管理,非界面接口(如定时任务触发、内部回调)也应纳入此体系,避免漏控
安全加固与生产注意事项
配置只是起点,上线前必须补全防护细节。
- 关闭网关的敏感端点(如
/actuator/gateway),或加访问白名单;禁止生产环境暴露 Hystrix Dashboard 等调试接口 - 所有对外路由启用 CORS 配置,但避免
allowedOrigins: ["*"];推荐显式指定可信域名 - 网关自身需部署为集群,前端加 Nginx 做负载和 TLS 终结;HTTPS 必须强制开启,HTTP 自动跳转
- 记录完整访问日志(含 IP、路径、响应码、耗时、token 主体),便于审计与异常追踪

















