Чтобы выполнить Авторизацию, необходимо прочитать некоторые атрибуты из запроса, чтобы можно было ввести данные для Сервера авторизации
Например, это перехватчик.Здесь prepareAuthZInput
вызывается для подготовки ввода
func AuthInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
input := prepareAuthZInput(info.FullMethod, req)
}
В этой функции есть большая часть if-else, которая проверяет фактический тип для запроса, приводит его к типу, а затем выполняет подготовку ввода.
func prepareAuthZInput(method string, req interface{}) {
var input Input
if methodName = "/Data/Call" {
callRequest, ok := req.(CallRequest)
if ok {
// prepare input from callRequest
}
} else if methodName = "/Data/Receive" {
receiveRequest, ok := req.(ReceiveRequest)
if ok {
// prepare input from receiveRequest
}
}
return input
}
Как я могу улучшить этот код?