• .NetCore Grpc 客服端 工厂模式配置授权


    services.AddGrpcClient<UserFinder.UserFinderClient>(options =>
                {
                    options.Address = new Uri(configuration.GetValue<string>("GrpcUrls:UserFind"));
                }).ConfigureHttpClient((service, client) =>
                {
                    var http = service.GetService<IHttpContextAccessor>();
                    var token = "";
                    var has = http?.HttpContext?.Request?.Headers?.TryGetValue("Authorization", out var tokens);
                    if (has.HasValue)
                    {
                        token = tokens.First().Remove(0, 7);
                    }
                    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
                });

    本例是服务端 调用 Grpc service ,也就是webapi 服务端 调用 grpc 服务,因为 webapi 中存在 token , 所以直接在 request -> headers 中取 Authorization 的值 去掉 Bearer空格 7个字符 得到token

     public class UserFindService
        {
            private readonly UserFinder.UserFinderClient _client;
    
            public UserFindService(UserFinder.UserFinderClient client, IHttpContextAccessor httpContextAccessor)
            {
                _client = client;
                CancellationToken = httpContextAccessor?.HttpContext?.RequestAborted ?? default;
            }
    
            protected CancellationToken CancellationToken { get; }
    
            public UserDataViewModel FindUser(string userid)
            {
                var user = _client.FindUser(request: new UserRequest { UserId = userid }, cancellationToken: CancellationToken);
                if (user == null) return null;
                return new UserDataViewModel
                {
                    UserId = user.UserId,
                    UserName = user.UserName,
                    AvatarUrl = user.AvatarUrl,
                    NickName = user.NickName,
                    PhoneNumber = user.PhoneNumber,
                    RealName = user.RealName,
                    Email = user.Email,
                    Gender = user.Gender,
                    Country = user.Country,
                    Province = user.Province,
                    City = user.City,
                    Authenticated = user.Authenticated
                };
            }
    }
  • 相关阅读:
    杂写笔记一
    杂写笔记二
    关于Filter的配置
    jsp基础
    Session
    实验七——实验目的:巩固分支结构、循环结构、函数和数组的使用方法
    实验 6-1输入n个整数,将它们存入数组a中。输出最大值和它所对应的下标
    作业三-5应用分支与循环结构解决问题——输入五级成绩
    作业三-3应用分支与循环结构解决问题——统计字符
    作业三-6
  • 原文地址:https://www.cnblogs.com/microestc/p/12528594.html
Copyright © 2020-2023  润新知