You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用接入Azure B2C后实现密码修改与重置功能的问题咨询

Azure B2C Flutter应用密码修改与重置实现方案

一、处理登录页「忘记密码?」跳转关联密码重置用户流

Azure B2C 登录页用户点击「忘记密码?」选项时,会返回固定错误码AADB2C90118,你只需要捕获该错误并触发预先配置的密码重置用户流即可:

  • 给现有登录请求增加try-catch捕获异常
  • 匹配异常错误码为AADB2C90118后,发起密码重置用户流的授权请求

代码示例:

try {
  result = await appauth.authorizeAndExchangeCode(
    AuthorizationTokenRequest(
      AppConfig.instance.values.clientId,
      AppConfig.instance.values.redirectUrl,
      serviceConfiguration: AuthorizationServiceConfiguration(
        AppConfig.instance.values.loginAuthorizationEndpoint, // 原有登录用户流的授权终结点
        AppConfig.instance.values.tokenEndpoint
      ),
      scopes: AppConfig.instance.values.scopes
    ),
  );
} catch (e) {
  if (e is AuthorizationException && e.error.contains('AADB2C90118')) {
    // 触发密码重置流程
    final resetResult = await appauth.authorizeAndExchangeCode(
      AuthorizationTokenRequest(
        AppConfig.instance.values.clientId,
        AppConfig.instance.values.redirectUrl,
        serviceConfiguration: AuthorizationServiceConfiguration(
          AppConfig.instance.values.resetPwdAuthorizationEndpoint, // 你提前配置好的密码重置用户流授权终结点
          AppConfig.instance.values.tokenEndpoint
        ),
        scopes: AppConfig.instance.values.scopes,
        promptValues: ['login']
      ),
    );
    // 重置成功后执行自定义逻辑,比如跳转登录页、自动登录
  }
}

二、个人资料页触发修改密码流程

点击「修改密码」按钮直接发起修改密码用户流的授权请求即可,建议携带当前用户的id_token免二次登录:

  • 首先在Azure B2C后台创建密码修改用户流,记录对应的授权终结点存入AppConfig
  • 登录成功后存储当前用户的id_token,修改密码时作为身份凭证传递

代码示例:

// 个人页修改密码按钮点击触发
Future<void> triggerChangePassword() async {
  // 读取本地存储的当前用户id_token
  final currentUserIdToken = await getLocalStoredIdToken();
  final changePwdResult = await appauth.authorizeAndExchangeCode(
    AuthorizationTokenRequest(
      AppConfig.instance.values.clientId,
      AppConfig.instance.values.redirectUrl,
      serviceConfiguration: AuthorizationServiceConfiguration(
        AppConfig.instance.values.changePwdAuthorizationEndpoint, // 修改密码用户流的授权终结点
        AppConfig.instance.values.tokenEndpoint
      ),
      scopes: AppConfig.instance.values.scopes,
      additionalParameters: {
        'id_token_hint': currentUserIdToken, // 传递身份凭证免二次登录
        'prompt': 'login'
      }
    ),
  );
  // 修改成功后替换本地存储的token,完成后续逻辑
}

注意事项

  • 所有用户流的重定向URL必须和Azure B2C后台配置完全一致,包括大小写、末尾斜杠
  • 密码重置、修改密码完成后返回的新token需要替换本地旧token,保证后续接口调用正常
  • 如果使用自定义策略而非预置用户流,触发逻辑完全一致,仅需替换对应流程的授权终结点即可

内容的提问来源于stack exchange,提问作者Pilouni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:09:01