在 asp.ner core 5.0 Grpc HttpApi 和jwt的集成 和跨域【https双向认证】和 Go Grpc Jwt身份认证和Gateway集成以及HTTPS双向认证 我们 获取用户名都是通过方法的,在这里我们来用拦截器实现一下。
GO
大类可分为两种 RPC 方法,与拦截器的对应关系是:普通方法:一元拦截器(grpc.UnaryInterceptor);流方法:流拦截器(grpc.StreamInterceptor)。
1.拦截器的实现 我们来看看他的实现。在\gogrpcjwt\api\authtoken.go文件我们增加方法 AuthInterceptor【我们的值 是通过context来存储的】
/*
ctx context.Context:请求上下文
req interface{}:RPC 方法的请求参数
info *UnaryServerInfo:RPC 方法的所有信息
handler UnaryHandler:RPC 方法本身
*/
func AuthInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
userName := CheckAuth(ctx)
log.Printf("gRPC method: %s, %v", info.FullMethod, req)
newCtx := ctx
if len(userName) &