Skip to content

passport

根据现有认证方式,梳理的认证模块。

基础认证接口:

ts
export interface IPassportService {
  login(redirectUrl?: string): void
  logout(): void
  fetchUserInfo(): Promise<IUserInfo>
  fetchPermission(): Promise<IPermissionData>
}

梳理uums认证服务:

ts
export class BasePassportService implements IPassportService {}

梳理sso认证服务:

ts
export class SsoPassportService extends BasePassportService {}

基于上述扩展微前端认证服务:

ts
export class MicroPassportService extends SsoPassportService {}

提示

同样也支持扩展支持PDA,或其他web环境,如微信企微飞书等。

上述列举认证服务继承关系,

其中fs-web-library中默认为sso认证方式(早期为uums,随着sso的稳定并全平台推广,内置默认认证方式也改为了sso)。

梳理出认证模块的抽象类有助于扩展各类认证方式,从而避免更换认证方式时侵入业务,只需实现对应的抽象类即可,无需修改业务代码。

wms仓库管理系统开发时,将认证方式从uums改为sso认证,只需注入SsoPassportService服务即可,

ts
provideServiceContext(ServiceType.passport, new SsoPassportService())

详见提交4eb8d96fc8b048872c5a7360ef582dad4ab460ae

再如dcs文控管理系统开发时,需要作为子应用接入mom平台,则需要在微前端环境中注入MicroPassportService服务即可,

ts
// mom微前端 认证
if (micro.isMicroApp) {
  provideServiceContext(ServiceType.passport, new MicroPassportService())
}

详见提交ec2d533c50c4a6573ea2bb260c084e58b1a5065d

注意:
上述迁移只是过渡阶段,现阶段大仓已经内置,业务无需关注,无需任何处理,即可兼容。

已有问题

回顾现有其他项目处理认证这块存在的问题,往往会深入业务,如ums->sso,且各系统方案不一致,处理方式也有差异,同样兼容sso集成平台时(微前端环境),又要进一步侵入业务,那假如未来其他场景的接入,必将再一次带来上述问题。