Files
sample-site/SDK_MODIFICATIONS.md
2026-05-20 22:40:32 +09:00

3.0 KiB
Raw Blame History

FIDO2 UI SDK 修改说明

修改概述

根据需求对UI SDK进行了以下修改

  1. 增加用户ID参数renderDeviceManager函数现在需要userId参数
  2. 删除登录功能移除了登录相关的UI和事件处理
  3. 简化设备管理设备操作现在直接使用传入的用户ID

主要修改

1. renderDeviceManager函数

修改前:

Fido2UIManager.renderDeviceManager({
  container: '#device-container',
  mode: 'modal',
  serverUrl: SERVER_URL
});

修改后:

Fido2UIManager.renderDeviceManager({
  userId: 'user@example.com',  // 新增必需参数
  container: '#device-container',
  mode: 'modal',
  serverUrl: SERVER_URL
});

2. DeviceManager修改

  • addDevice(): 使用this.config.userId代替从sessionStorage获取用户ID
  • deleteDevice(): 使用this.config.userId代替从sessionStorage获取用户ID
  • checkSession(): 简化为始终返回true假设用户已登录
  • getUserId(): 返回this.config.userId

3. 删除的功能

  • 移除了登录按钮的UI渲染
  • 移除了login事件处理器
  • 移除了session检查逻辑
  • 移除了getSessionData方法

4. 错误处理

如果未提供userId参数renderDeviceManager会抛出错误

'userId is required for device management operations'

使用示例

模式1模态框模式

Fido2UIManager.renderDeviceManager({
  userId: 'user@example.com',
  container: '#device-container',
  mode: 'modal',
  serverUrl: 'https://your-server.com',
  language: 'en-US',
  callbacks: {
    onInit: function(manager) {
      console.log('Device manager initialized');
    },
    onDeviceAdded: function(device) {
      console.log('Device added:', device);
    },
    onDeviceDeleted: function(deviceId) {
      console.log('Device deleted:', deviceId);
    },
    onDeviceListLoaded: function(devices) {
      console.log('Devices loaded:', devices);
    },
    onError: function(error) {
      console.error('Error:', error);
    },
    onClose: function() {
      console.log('Device manager closed');
    }
  }
});

模式2独立页面模式

Fido2UIManager.renderDeviceManager({
  userId: 'user@example.com',
  mode: 'standalone',
  serverUrl: 'https://your-server.com',
  language: 'zh-CN',
  theme: {
    primaryColor: '#007bff',
    backgroundColor: '#f8f9fa'
  },
  features: {
    showAddButton: true,
    showDeleteButton: true,
    showUserInfo: true,
    showSessionStatus: true
  }
});

注意事项

  1. userId参数是必需的不提供userId会导致错误
  2. 假设用户已登录:不再进行登录状态检查
  3. 向后兼容:此修改可能会影响现有集成,需要更新调用代码
  4. 删除的APIrenderLogin函数仍然存在但如果不再需要可以移除

测试

可以使用test-device-manager.html文件测试修改后的功能。

依赖关系

确保在调用renderDeviceManager之前已经加载了

  • jQuery
  • Bootstrap JS
  • dfido2-lib.js
  • fido2-ui-sdk.js