ABP-VNext 用户权限管理系统实战03---动态api调用并传递token

一、使用动态api的目的

ABP可以自动创建C# API 客户端代理来调用远程HTTP服务(REST APIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据.

现在有两个服务:BackgroundJob服务要调用IdentityManagement服务,并在调用时传递token

二、集成步骤

1、创建可调用的动态api

在Bridge.IdentityManagement.Application模块中有类UserService

 

有方法GetInfo()

 在IdentityServiceHostModule配置中增加配置

Configure<AbpAspNetCoreMvcOptions>(options =>
{
    options.ConventionalControllers.Create(typeof(IdentityManagementApplicationModule).Assembly, option =>
    {
        option.TypePredicate = type => { return true; };
    });
});

 

2、BackgroundJobApplicationModule客户端调用

在调用之前要进行配置

第一步:在BackgroundJobHttpApiClientModule注入程序集IdentityManagementApplicationContractsModule

 第二步:在Bridge.BackgroundJobService.Host中配置调用的远程ip

 第三步:在BackgroundJobHttpApiModule中依赖BackgroundJobHttpApiClientModule模块

 最后在BackgroundJobApplicationModule模块HttpClientTest类中调用

 三、传递token

现在服务和服务之前可以像类中方法中一样调用了,但是在GetInfo方法中获取不到token,现在需要将在访问Test方法时获取到的token进行传递

 查看是不是获取到了token只需要看看当前用户也是就是变量CurrentUser有值。

1、BackgroundJob服务中解析token并获取当前用户的值

第一步:修改BackgroundJob配置文件,确定当前api的名称

 第二步:在auth服务中增加scope

 

 

 项目之前在请求token时写死了Scope现在注掉

 到此,访问BackgroundJob服务的api应该可以拿到当前用户数据了。

但是,如果你通过动态api,从BackgroundJob服务去访问其它服务还是拿不到token

此时我们需要在BackgroundJobServiceHostModule服务中依赖两个模块:

Volo.Abp.Http.Client.IdentityModel.dll

Volo.Abp.Http.Client.IdentityModel.Web.dll

 

posted @ 2024-01-27 17:07  爱生活,爱代码  阅读(503)  评论(0编辑  收藏  举报