项目

应用程序配置端点

ABP提供了一个预构建的标准端点,其中包含有关应用程序/服务的有用信息。以下是该端点提供的基础信息列表:

  • 当前用户被授予的 策略(权限)
  • 当前用户的 设置
  • 当前用户 信息(如ID和用户名)
  • 当前 租户 信息(如ID和名称)
  • 当前用户的 时区 信息及应用程序的 时钟 类型

如果您使用ABP的启动模板并选择官方UI选项,这些配置均已预设完成,无需关注细节。但若从零开始构建UI应用,则需要了解此端点。

HTTP API

访问基于ABP的Web应用或HTTP服务的 /api/abp/application-configuration URL,即可获取JSON格式的配置信息。该端点对创建应用客户端非常有用。

脚本

对于ASP.NET Core MVC(Razor Pages)应用,相同的配置值也可在JavaScript端通过/Abp/ApplicationConfigurationScriptURL获取,该脚本基于上述HTTP API自动生成。

详见ASP.NET Core UI的 JavaScript API文档

其他UI类型提供对应平台的原生服务。例如,可通过 Angular UI 设置文档 了解如何使用此端点暴露的设置值。

扩展端点

application-configuration端点包含应用程序的有用信息,如_本地化值_、当前用户信息、_已授权限_等。虽然这些值通常足以满足常见需求(如获取登录用户ID或其权限),但您可能仍需扩展该端点以提供额外信息。此时可使用IApplicationConfigurationContributor接口。

IApplicationConfigurationContributor

通过实现IApplicationConfigurationContributor接口可为application-configuration端点添加额外信息。

示例:设置部署版本

using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
using Volo.Abp.Data;

namespace Acme.BookStore.Web
{
    public class MyApplicationConfigurationContributor : IApplicationConfigurationContributor
    {
        public Task ContributeAsync(ApplicationConfigurationContributorContext context)
        {
            //为简化示例使用静态值,可通过注入服务实现动态逻辑
            var deploymentVersion = "v1.0.0"; 

            //设置deploymentVersion属性
            context.ApplicationConfiguration.SetProperty("deploymentVersion", deploymentVersion);

            return Task.CompletedTask;
        }
    }
}

将贡献者实例添加到AbpApplicationConfigurationOptions

Configure<AbpApplicationConfigurationOptions>(options =>
{
    options.Contributors.AddIfNotContains(new MyApplicationConfigurationContributor());
});
  • IApplicationConfigurationContributor通过ContributeAsync方法扩展application-configuration端点
  • 可通过context.ServiceProvider获取服务并实现自定义逻辑

应用配置贡献者会作为应用配置初始化过程的一部分执行

在本文档中