@liujitcn/kratos-taro-app-core 0.0.37 → 0.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @liujitcn/kratos-taro-app-core
2
2
 
3
+ 账号密码、OAuth 票据兑换和微信登录统一返回 `mfa_remember_days`,表示当前登录策略允许的 MFA 设备免验证天数;为 `0` 时不提供记住设备选项。
4
+
3
5
  `@liujitcn/kratos-taro-app-core` 是 Taro 应用底座,负责模块协议、启动流程、认证请求、共享状态、动态导航、基础页面、公共静态资源和构建期页面装配。core 不依赖 UI 或业务模块。
4
6
 
5
7
  ## 主要能力
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "type": "git",
8
8
  "url": "git@github.com:liujitcn/kratos-admin.git"
9
9
  },
10
- "version": "0.0.37",
10
+ "version": "0.0.39",
11
11
  "type": "module",
12
12
  "files": [
13
13
  "dist",
@@ -36,10 +36,10 @@
36
36
  "core.home.account_capability_description": "Profile, app settings, and AI assistant access are included",
37
37
  "core.home.cross_platform": "Cross-platform pages",
38
38
  "core.home.cross_platform_description": "One codebase for H5 and WeChat Mini Program",
39
- "core.home.demo_scope": "Demo scope",
39
+ "core.home.demo_scope": "Overview",
40
40
  "core.home.framework": "App framework",
41
41
  "core.home.language": "Language",
42
- "core.home.main_title": "Application Framework",
42
+ "core.home.main_title": "Application Home",
43
43
  "core.home.state_management": "State management",
44
44
  "core.home.static_home": "Static home",
45
45
  "core.home.static_home_description": "This page presents framework details without business APIs",
@@ -62,6 +62,7 @@
62
62
  "core.login.default_sub_title": "Welcome",
63
63
  "core.login.login_failed": "Login failed. Try again.",
64
64
  "core.login.login_success": "Logged in",
65
+ "core.login.mfa_remember_device": "Skip verification on this device for {days} days",
65
66
  "core.login.mfa_title": "Multi-factor authentication",
66
67
  "core.login.mfa_code": "Enter the authenticator code",
67
68
  "core.login.mfa_recovery_code": "Recovery code (optional)",
@@ -36,10 +36,10 @@
36
36
  "core.home.account_capability_description": "個人情報、アプリケーション設定、スマートアシスタントの入り口が予約されています",
37
37
  "core.home.cross_platform": "クロスエンド ページ",
38
38
  "core.home.cross_platform_description": "同じページ コード セットが H5 および WeChat ミニ プログラムに適応します",
39
- "core.home.demo_scope": "デモの範囲",
39
+ "core.home.demo_scope": "機能概要",
40
40
  "core.home.framework": "アプリケーション フレームワーク",
41
41
  "core.home.language": "開発言語",
42
- "core.home.main_title": "アプリケーションフレームワークの例",
42
+ "core.home.main_title": "アプリケーションホーム",
43
43
  "core.home.state_management": "ステータス管理",
44
44
  "core.home.static_home": "静的ホームページ",
45
45
  "core.home.static_home_description": "現在のホームページはフレーム情報を表示するために使用されており、ビジネス インターフェイスには依存していません",
@@ -62,6 +62,7 @@
62
62
  "core.login.default_sub_title": "このアプリケーションへようこそ",
63
63
  "core.login.login_failed": "ログインに失敗しました。もう一度お試しください。",
64
64
  "core.login.login_success": "ログインに成功しました",
65
+ "core.login.mfa_remember_device": "この端末では{days}日間、追加認証を省略する",
65
66
  "core.login.mfa_title": "多要素認証",
66
67
  "core.login.mfa_code": "認証コードを入力",
67
68
  "core.login.mfa_recovery_code": "リカバリーコード(任意)",
@@ -36,10 +36,10 @@
36
36
  "core.home.account_capability_description": "个人资料、应用设置与智能助手入口已保留",
37
37
  "core.home.cross_platform": "跨端页面",
38
38
  "core.home.cross_platform_description": "同一套页面代码适配 H5 和微信小程序",
39
- "core.home.demo_scope": "演示范围",
39
+ "core.home.demo_scope": "功能概览",
40
40
  "core.home.framework": "应用框架",
41
41
  "core.home.language": "开发语言",
42
- "core.home.main_title": "应用框架示例",
42
+ "core.home.main_title": "应用首页",
43
43
  "core.home.state_management": "状态管理",
44
44
  "core.home.static_home": "静态首页",
45
45
  "core.home.static_home_description": "当前首页用于展示框架信息,不依赖业务接口",
@@ -64,6 +64,7 @@
64
64
  "core.login.login_success": "登录成功",
65
65
  "core.login.mfa_title": "多因素认证",
66
66
  "core.login.mfa_code": "请输入动态口令",
67
+ "core.login.mfa_remember_device": "{days}天内免验证此设备",
67
68
  "core.login.mfa_recovery_code": "恢复码(可选)",
68
69
  "core.login.mfa_setup_title": "绑定多因素认证",
69
70
  "core.login.mfa_copy_uri": "复制绑定地址",
@@ -36,10 +36,10 @@
36
36
  "core.home.account_capability_description": "個人資料、應用設定與智慧助手入口已保留",
37
37
  "core.home.cross_platform": "跨端頁面",
38
38
  "core.home.cross_platform_description": "同一套頁面程式碼適配 H5 和微信小程式",
39
- "core.home.demo_scope": "演示範圍",
39
+ "core.home.demo_scope": "功能概覽",
40
40
  "core.home.framework": "應用框架",
41
41
  "core.home.language": "開發語言",
42
- "core.home.main_title": "應用框架示例",
42
+ "core.home.main_title": "應用首頁",
43
43
  "core.home.state_management": "狀態管理",
44
44
  "core.home.static_home": "靜態首頁",
45
45
  "core.home.static_home_description": "當前首頁用於展示框架資訊,不依賴業務介面",
@@ -62,6 +62,7 @@
62
62
  "core.login.default_sub_title": "歡迎使用本應用",
63
63
  "core.login.login_failed": "登入失敗,請重試",
64
64
  "core.login.login_success": "登入成功",
65
+ "core.login.mfa_remember_device": "{days}天內免驗證此裝置",
65
66
  "core.login.mfa_title": "多因素認證",
66
67
  "core.login.mfa_code": "請輸入動態密碼",
67
68
  "core.login.mfa_recovery_code": "恢復碼(可選)",
@@ -24,7 +24,7 @@ export interface OptionLanguageResponse {
24
24
  languages: LanguageItem[];
25
25
  }
26
26
 
27
- /** 语言公共服务。 */
27
+ /** Base语言公共服务。 */
28
28
  export interface LanguageService {
29
29
  /** 查询当前支持的语言选项。 */
30
30
  OptionLanguage(request: OptionLanguageRequest): Promise<OptionLanguageResponse>;
@@ -155,6 +155,8 @@ export interface LoginResponse {
155
155
  mfa_method: string;
156
156
  /** WebAuthn认证选项JSON */
157
157
  mfa_webauthn_options_json: string;
158
+ /** 当前登录策略允许的MFA设备免验证天数 */
159
+ mfa_remember_days: number;
158
160
  }
159
161
 
160
162
  /** Base登录公共服务 */
@@ -19,6 +19,8 @@ export interface VerifyMfaRequest {
19
19
  recovery_code: string;
20
20
  /** WebAuthn认证响应JSON */
21
21
  webauthn_response_json: string;
22
+ /** 是否记住当前设备 */
23
+ remember_device: boolean;
22
24
  }
23
25
 
24
26
  /** 登录强制绑定多因素认证请求。 */
@@ -109,6 +109,8 @@ export interface CreateOauthSessionResponse {
109
109
  mfa_method: string;
110
110
  /** WebAuthn认证选项JSON */
111
111
  mfa_webauthn_options_json: string;
112
+ /** 当前登录策略允许的MFA设备免验证天数 */
113
+ mfa_remember_days: number;
112
114
  }
113
115
 
114
116
  /** 三方登录回调请求 */
@@ -157,6 +159,8 @@ export interface ExchangeOauthTicketResponse {
157
159
  mfa_method: string;
158
160
  /** WebAuthn认证选项JSON */
159
161
  mfa_webauthn_options_json: string;
162
+ /** 当前登录策略允许的MFA设备免验证天数 */
163
+ mfa_remember_days: number;
160
164
  }
161
165
 
162
166
  /** 个人中心三方账号绑定回调请求 */
@@ -108,6 +108,8 @@ export default function LoginPage() {
108
108
  const [mfaCode, setMfaCode] = useState('')
109
109
  const [mfaRecoveryCode, setMfaRecoveryCode] = useState('')
110
110
  const [mfaMethod, setMfaMethod] = useState('totp')
111
+ const [mfaRememberDays, setMfaRememberDays] = useState(0)
112
+ const [rememberMfaDevice, setRememberMfaDevice] = useState(false)
111
113
  const [mfaWebAuthnOptionsJson, setMfaWebAuthnOptionsJson] = useState('')
112
114
  const [mfaSetupVisible, setMfaSetupVisible] = useState(false)
113
115
  const [mfaSetupTicket, setMfaSetupTicket] = useState('')
@@ -326,6 +328,8 @@ export default function LoginPage() {
326
328
  setMfaCode('')
327
329
  setMfaRecoveryCode('')
328
330
  setMfaMethod(response.mfa_method || 'totp')
331
+ setMfaRememberDays(response.mfa_remember_days || 0)
332
+ setRememberMfaDevice(false)
329
333
  setMfaWebAuthnOptionsJson(response.mfa_webauthn_options_json || '')
330
334
  setMfaVisible(true)
331
335
  return false
@@ -352,6 +356,7 @@ export default function LoginPage() {
352
356
  code: mfaRecoveryCode ? '' : mfaCode,
353
357
  recovery_code: mfaRecoveryCode,
354
358
  webauthn_response_json: webauthnResponseJson,
359
+ remember_device: rememberMfaDevice,
355
360
  })
356
361
  setMfaVisible(false)
357
362
  if (await handleLoginResponse(response)) await loginSuccess()