【实战】Spring Cloud Gateway 整合 OAuth2
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
public class AuthGlobalFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 获取请求中的Token
String token = exchange.getRequest().getHeaders().getFirst("Authorization");
// 验证Token是否有效,这里简化为直接检查Token是否为null
if (token == null || "invalid_token".equals(token)) {
// 如果Token无效,返回401 Unauthorized响应
ServerHttpResponse response = exchange.getResponse();
response.setStatusCode(HttpStatus.UNAUTHORIZED);
return DataBufferUtils.write(response.bufferFactory(), response.getHeaders(), "Invalid or missing token",
exchange.getRequest().getLogFormat());
}
// 如果Token有效,继续请求处理
return chain.filter(exchange);
}
}
这段代码定义了一个全局过滤器,用于在Spring Cloud Gateway中实现OAuth2的访问令牌验证。它检查每个请求是否包含有效的Authorization
头信息,如果没有或者Token无效,则返回401未授权的HTTP状态码。如果Token有效,请求则继续通过Gateway过滤链。这个简化的例子展示了如何实现基本的Token验证,实际应用中你需要与OAuth2服务提供商的认证服务集成。
评论已关闭