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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章