如何扩展 passport.js 模块 AuthenticateOptions 接口
How to extend passport.js module AuthenticateOptions interface
Passport.js 策略可以支持身份验证调用中的其他选项:
passport.authenticate('azuread-openidconnect', {
// Default passport options
failWithError: true,
successReturnToOrRedirect: '/',
// Custom option supported by the azure-ad plugin
// Type error - 'tenantIdOrName' does not exist in type 'AuthenticateOptions'
tenantIdOrName: 'common',
});
使用自定义策略支持的选项,例如上面的 tenantIdOrName
,会导致打印错误,因为它不是 passport 的 AuthenticateOptions
界面的一部分 found here and used in the authenticate
signature here
我试过一些东西都没有成功
- 模块增强即
declare module 'passport' {...}
似乎覆盖了模块的类型而不是扩展它们(任何不在我的扩展中的都被视为未类型)
- 合并接口即
declare namespace passport { interface AuthenticateOptions { ...new properties }}
,这似乎对authenticate
方法签名没有影响。
如何在不进行类型转换的情况下支持 authenticate
调用中的其他属性?
原来我需要为我的模块扩充导入现有模块以扩展模块的类型。
.d.ts 文件* 中的以下内容成功扩展了 AuthenticateOptions
接口:
import { AuthenticateOptions } from 'passport';
declare module 'passport' {
// Extend acceptable authenticate options for Passport Azure AD
// https://github.com/AzureAD/passport-azure-ad#513-options-available-for-passportauthenticate
interface AuthenticateOptions {
customState?: string;
resourceURL?: string;
tenantIdOrName?: string;
domain_hint?: string;
login_hint?: string;
prompt?: string;
}
}
*我发现文件必须不能命名为passport.d.ts
,任何其他名称都可以
Passport.js 策略可以支持身份验证调用中的其他选项:
passport.authenticate('azuread-openidconnect', {
// Default passport options
failWithError: true,
successReturnToOrRedirect: '/',
// Custom option supported by the azure-ad plugin
// Type error - 'tenantIdOrName' does not exist in type 'AuthenticateOptions'
tenantIdOrName: 'common',
});
使用自定义策略支持的选项,例如上面的 tenantIdOrName
,会导致打印错误,因为它不是 passport 的 AuthenticateOptions
界面的一部分 found here and used in the authenticate
signature here
我试过一些东西都没有成功
- 模块增强即
declare module 'passport' {...}
似乎覆盖了模块的类型而不是扩展它们(任何不在我的扩展中的都被视为未类型) - 合并接口即
declare namespace passport { interface AuthenticateOptions { ...new properties }}
,这似乎对authenticate
方法签名没有影响。
如何在不进行类型转换的情况下支持 authenticate
调用中的其他属性?
原来我需要为我的模块扩充导入现有模块以扩展模块的类型。
.d.ts 文件* 中的以下内容成功扩展了 AuthenticateOptions
接口:
import { AuthenticateOptions } from 'passport';
declare module 'passport' {
// Extend acceptable authenticate options for Passport Azure AD
// https://github.com/AzureAD/passport-azure-ad#513-options-available-for-passportauthenticate
interface AuthenticateOptions {
customState?: string;
resourceURL?: string;
tenantIdOrName?: string;
domain_hint?: string;
login_hint?: string;
prompt?: string;
}
}
*我发现文件必须不能命名为passport.d.ts
,任何其他名称都可以