【gRPC-gateway】auth-通过拦截器从上下文中提取元数据用于认证,与从http header转发待认证数据到上下文进行验证,go案例

从grpc上下文中提取元数据用于认证 案例

interceptor.go

package server

import (
	"context"
	"errors"
	"google.golang.org/grpc"
	"google.golang.org/grpc/metadata"
	"strings"
)

// UnaryInterceptor 是一个 unary RPC 的拦截器,用于在处理请求前进行身份认证。
// 参数:
//
//	ctx - 上下文,用于传递请求相关的元数据。
//	req - 请求的数据。
//	info - 包含被拦截的 RPC 方法的信息。
//	handler - 下游的处理器,用于执行实际的 RPC 方法。
//
// 返回值:
//
//	响应数据和可能的错误。
func UnaryInterceptor(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) {
   
	// 在执行实际的处理函数前进行身份认证。
	err = auth(ctx)
	if err != nil {
   
		return nil, err
	}
	// 身份认证通过后,调用实际的处理函数。
	return handler(ctx, req)
}

// StreamInterceptor 是一个 streaming RPC 的拦截器,用于在处理请求前进行身份认证。
// 参数:
//
//	srv - 服务器的实现。
//	ss - 服务器流,用于读取请求和写入响应。
//	info - 包含被拦截的 streaming RPC 方法的信息。
//	handler - 下游的处理器,用于执行实际的 streaming RPC 方法。
//
// 返回值:
//
//	可能的错误。
func StreamInterceptor(srv any, ss grpc.ServerStream
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值