此介面可定義與 User 相關的多重要素相關屬性和作業。
簽名:
export interface MultiFactorUser
屬性
屬性 | 類型 | 說明 |
---|---|---|
已註冊因素 | 多重要素資訊[] | 傳回使用者已註冊的雙重驗證清單。 |
方法
方法 | 說明 |
---|---|
enroll(assertion, displayName) | 為使用者註冊 MultiFactorAssertion 識別的第二重驗證方式。 |
getSession() | 傳回次要因素註冊作業的工作階段 ID。這會用來識別嘗試註冊第二重驗證的使用者。 |
unenroll(選項) | 取消註冊指定的次要驗證方式。 |
MultiFactorUser.enrolledFactors
傳回使用者已註冊的雙重驗證清單。
簽名:
readonly enrolledFactors: MultiFactorInfo[];
MultiFactorUser.enroll()
為使用者註冊 MultiFactorAssertion 識別的第二重驗證方式。
之後,使用者權杖會隨之更新,以反映 JWT 酬載中的變更。接受其他顯示名稱參數,用來識別使用者的第二個因素。最近必須重新驗證,這項作業才能成功。註冊成功後,系統會撤銷現有的 Firebase 工作階段 (更新權杖)。使用者註冊新因素時,系統會傳送電子郵件通知。
簽名:
enroll(assertion: MultiFactorAssertion, displayName?: string | null): Promise<void>;
參數
參數 | 類型 | 說明 |
---|---|---|
斷言 | 多因素斷層 | 註冊的多重要素斷言。 |
displayName | 字串 |空值 | 第二個因素的顯示名稱。 |
傳回:
承諾<void>
範例
const multiFactorUser = multiFactor(auth.currentUser);
const multiFactorSession = await multiFactorUser.getSession();
// Send verification code.
const phoneAuthProvider = new PhoneAuthProvider(auth);
const phoneInfoOptions = {
phoneNumber: phoneNumber,
session: multiFactorSession
};
const verificationId = await phoneAuthProvider.verifyPhoneNumber(phoneInfoOptions, appVerifier);
// Obtain verification code from user.
const phoneAuthCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const multiFactorAssertion = PhoneMultiFactorGenerator.assertion(phoneAuthCredential);
await multiFactorUser.enroll(multiFactorAssertion);
// Second factor enrolled.
MultiFactorUser.getSession()
傳回次要因素註冊作業的工作階段 ID。這會用來識別嘗試註冊第二重驗證的使用者。
簽名:
getSession(): Promise<MultiFactorSession>;
傳回:
Promise<MultiFactorSession>
利用 MultiFactorSession 解析的承諾。
範例
const multiFactorUser = multiFactor(auth.currentUser);
const multiFactorSession = await multiFactorUser.getSession();
// Send verification code.
const phoneAuthProvider = new PhoneAuthProvider(auth);
const phoneInfoOptions = {
phoneNumber: phoneNumber,
session: multiFactorSession
};
const verificationId = await phoneAuthProvider.verifyPhoneNumber(phoneInfoOptions, appVerifier);
// Obtain verification code from user.
const phoneAuthCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const multiFactorAssertion = PhoneMultiFactorGenerator.assertion(phoneAuthCredential);
await multiFactorUser.enroll(multiFactorAssertion);
MultiFactorUser.unenroll()
取消註冊指定的次要驗證方式。
如要指定要移除的係數,請傳遞 MultiFactorInfo 物件 (從 MultiFactorUser.enrolledFactors 擷取) 或因素 UID 字串。帳戶取消註冊不會撤銷工作階段。使用者可能會收到有關異動的電子郵件通知。最近必須重新驗證,這項作業才能成功。當使用者取消註冊現有因素時,系統會傳送電子郵件通知至使用者的電子郵件地址。
簽名:
unenroll(option: MultiFactorInfo | string): Promise<void>;
參數
參數 | 類型 | 說明 |
---|---|---|
選項 | MultiFactorInfo |字串 | 取消註冊的多重要素選項。 |
傳回:
承諾<void>
- 在取消註冊作業完成時解析的
Promise
。
範例
const multiFactorUser = multiFactor(auth.currentUser);
// Present user the option to choose which factor to unenroll.
await multiFactorUser.unenroll(multiFactorUser.enrolledFactors[i])