Skip to main content

折旧

简介

本页包含有关 Backstage 各部分弃用内容的扩展文档。 这并不是一个详尽无遗的列表,因为大多数弃用内容仅以更新日志通知和控制台警告的形式出现。 这里列出的弃用内容需要更多的指导,而不是控制台消息中的内容。

应用程序主题

Released 2021-11-12 in @backstage/core-plugin-api v0.1.13

为了更灵活地确定可以使用哪些类型的主题以及如何应用这些类型的主题theme上的AppTheme类型已被弃用,取而代之的是Provider属性。Provider属性是一个 React 组件,只要该主题处于活动状态,它就会被挂载到应用程序的根目录下。 这也消除了与 Material UI 的紧密联系,为其他类型的主题打开了大门,并消除了硬编码使用<CssBaseline>.

要迁移现有主题,请移除theme属性,并将其移动到新的Provider组件,使用ThemeProvider提供新的主题,并与<CssBaseline>例如,目前的主题是这样的:

const darkTheme = {
id: 'dark',
title: 'Dark Theme',
variant: 'dark',
icon: <DarkIcon />,
theme: darkTheme,
};

将迁移到

const darkTheme = {
id: 'dark',
title: 'Dark Theme',
variant: 'dark',
icon: <DarkIcon />,
Provider: ({ children }) => (
<ThemeProvider theme={darkTheme}>
<CssBaseline>{children}</CssBaseline>
</ThemeProvider>
),
};

请注意,现有的AppTheme类型仍然需要theme属性将被设置,因为它是在AppThemeApi这将是一个突破性的改变theme这就意味着,如果您目前构建的主题传递给createApp使用AppTheme作为中间类型,您需要以某种方式解决这个问题,例如将主题传递给createApp更直接。

通用认证 API 参考资料

Released 2021-12-16 in @backstage/core-plugin-api v0.3.1

其中有四个认证实用程序 API 引用@backstage/core-plugin-api相关的应用程序接口包括auth0AuthApiRef,oauth2ApiRef,oidcAuthApiRefsamlAuthApiRef这些 API 的问题在于,它们没有关于授权提供商的实际合同。 这或多或少导致无法在开源插件中以任何有意义的方式使用这些提供商。 我们也不想仅仅将这些实用 API 作为辅助工具保留,而是选择删除它们,让集成商自己定义更适合其授权提供商的 API。 这也符合统一所有授权提供商的长期目标,从而避免出现独立的前端实现。

如果您目前正在使用这些 API 引用中的一个用于应用程序内的登录或访问授权,您需要采取几个步骤才能迁移到您自己的自定义 API。

首先,您需要定义一个新的实用程序 API 引用。 如果您只将 API 用于登录,您可以将定义放在packages/app/src/apis.ts但是,如果您需要在插件中访问 auth API,则需要从通用软件包中导出。 如果您还没有这样的软件包,我们建议您创建@internal/apis并从中导出 API 引用。

// `ProfileInfoApi & BackstageIdentityApi & SessionApi` are required for sign-in
// Include `OAuthApi & OpenIdConnectApi` only if applicable
export const acmeAuthApiRef: ApiRef<
OAuthApi &
OpenIdConnectApi &
ProfileInfoApi &
BackstageIdentityApi &
SessionApi
> = createApiRef({
id: 'internal.auth.acme',
});

接下来,您需要为内部的应用程序接口布线packages/app/src/apis.ts,这取决于您要替换的 API。 例如,如果您要替换的是oauth2ApiRef工厂可能是这样的

// oauth2
createApiFactory({
api: acmeAuthApiRef,
deps: {
discoveryApi: discoveryApiRef,
oauthRequestApi: oauthRequestApiRef,
configApi: configApiRef,
},
factory: ({ discoveryApi, oauthRequestApi, configApi }) =>
OAuth2.create({
discoveryApi,
oauthRequestApi,
environment: configApi.getOptionalString('auth.environment'),
}),
});

提供商特定的工厂实现,根据您之前使用的 apiRef,将您需要的代码复制到工厂方法中。

// samlAuthApiRef
SamlAuth.create({
discoveryApi,
environment: configApi.getOptionalString('auth.environment'),
});

// oidcAuthApiRef
OAuth2.create({
discoveryApi,
oauthRequestApi,
provider: {
id: 'oidc',
title: 'Your Identity Provider',
icon: () => null,
},
environment: configApi.getOptionalString('auth.environment'),
});

// auth0AuthApiRef
OAuth2.create({
discoveryApi,
oauthRequestApi,
provider: {
id: 'auth0',
title: 'Auth0',
icon: () => null,
},
defaultScopes: ['openid', 'email', 'profile'],
environment: configApi.getOptionalString('auth.environment'),
});

最后,要使提供程序显示在设置菜单中,您还需要在packages/app/src/App.tsx以通过acmeAuthApiRefUserSettingsPage这将替换所有现有的提供程序项,因此您可能需要添加回默认的提供程序项。默认提供程序设置.

<Route
path="/settings"
element={
<UserSettingsPage
providerSettings={
<ProviderSettingsItem
title="ACME"
description="Provides sign-in via ACME"
apiRef={acmeAuthApiRef}
icon={Star}
/>
}
/>
}
/>