Skip to content

用户身份识别

用户身份识别功能用于获取和验证当前登录用户的身份信息,以及支持第三方身份登录。

身份信息获取

获取当前用户信息

javascript
// 获取用户ID
var userId = getCurrentUserId();

// 获取用户名称
var userName = getCurrentUserName();

// 获取用户账号
var userAccount = getCurrentUserAccount();

// 获取用户邮箱
var userEmail = getCurrentUserEmail();

// 获取用户手机号
var userPhone = getCurrentUserPhone();

// 获取完整用户信息
var userInfo = getCurrentUserInfo();
/* 返回:
{
  id: 1001,
  account: 'zhangsan',
  name: '张三',
  email: 'zhangsan@example.com',
  phone: '13800138000',
  dept_id: 10,
  dept_name: '研发部',
  avatar: '/uploads/avatar/1001.jpg',
  roles: ['admin', 'manager'],
  login_time: '2026-07-22 09:00:00'
}
*/

获取用户部门信息

javascript
// 获取用户部门ID
var deptId = getCurrentUserDeptId();

// 获取用户部门名称
var deptName = getCurrentUserDeptName();

// 获取用户所在部门及所有上级部门
var deptPath = getUserDeptPath();
// 返回:[{id:1,name:'总公司'}, {id:10,name:'研发部'}]

// 获取用户所在部门及所有下级部门
var deptAndChildren = getUserDeptAndChildren();
// 返回:[10, 11, 12, 13]

获取用户角色信息

javascript
// 获取用户角色列表
var roles = getUserRoles();
// 返回:['admin', 'manager', 'finance']

// 检查是否拥有某角色
if (hasRole('admin')) {
  console.log('是管理员');
}

// 检查是否拥有任意一个角色
if (hasAnyRole(['admin', 'manager'])) {
  console.log('是管理员或经理');
}

// 检查是否拥有所有指定角色
if (hasAllRoles(['finance', 'manager'])) {
  console.log('同时是财务和经理');
}

登录验证

检查登录状态

javascript
// 检查是否已登录
if (isLoggedIn()) {
  // 已登录
} else {
  // 未登录,跳转到登录页
  redirectToLogin();
}

登录状态监听

javascript
// 监听登录事件
onLogin(function(userInfo) {
  console.log('用户登录:', userInfo.name);
  showMessage('success', '欢迎回来,' + userInfo.name);
});

// 监听登出事件
onLogout(function() {
  console.log('用户已登出');
  redirectToLogin();
});

// 监听登录超时
onLoginTimeout(function() {
  showConfirm('登录超时', '登录已超时,请重新登录', function(result) {
    redirectToLogin();
  });
});

第三方身份集成

平台支持多种第三方身份系统的单点登录(SSO)。

支持的第三方系统

系统说明
企业微信企业微信身份登录
钉钉钉钉身份登录
飞书飞书身份登录
泛微 OA泛微 OA 系统身份对接
蓝凌 OA蓝凌 OA 系统身份对接
伯俊分销伯俊分销系统身份对接
CASCAS 单点登录
OAuth2标准 OAuth2.0 登录
LDAPLDAP 目录服务认证
AD 域Windows AD 域认证

企业微信登录示例

javascript
// 检测是否在企业微信中
if (isWorkWeChat()) {
  // 自动获取企业微信用户信息
  getWorkWeChatUser(function(userInfo) {
    // 通过企业微信用户ID匹配平台用户
    ssoLogin('workwechat', userInfo, function(result) {
      if (result.success) {
        showMessage('success', '登录成功');
        // 跳转到首页
        redirectToHome();
      } else {
        showMessage('error', result.message);
      }
    });
  });
}

钉钉登录示例

javascript
if (isDingTalk()) {
  getDingTalkAuthCode(function(code) {
    ssoLogin('dingtalk', { code: code }, function(result) {
      if (result.success) {
        redirectToHome();
      }
    });
  });
}

标准 OAuth2 登录

javascript
// 跳转到 OAuth2 授权页
function oauth2Login() {
  var params = {
    client_id: 'your_client_id',
    redirect_uri: 'https://your-domain.com/callback',
    response_type: 'code',
    scope: 'user_info',
    state: generateRandomString(32)
  };
  
  var authUrl = 'https://oauth.example.com/authorize?' + buildQuery(params);
  window.location.href = authUrl;
}

// 回调页面处理
function oauth2Callback(code, state) {
  ssoLogin('oauth2', { code: code, state: state }, function(result) {
    if (result.success) {
      redirectToHome();
    }
  });
}

LDAP / AD 域登录

javascript
// LDAP 登录配置
var ldapConfig = {
  url: 'ldap://ldap.example.com:389',
  baseDN: 'DC=example,DC=com',
  usernameAttribute: 'sAMAccountName',
  searchBase: 'OU=Users,DC=example,DC=com'
};

// LDAP 登录
function ldapLogin(username, password) {
  ssoLogin('ldap', {
    username: username,
    password: password,
    config: ldapConfig
  }, function(result) {
    if (result.success) {
      redirectToHome();
    } else {
      showMessage('error', result.message);
    }
  });
}

身份映射与权限同步

当使用第三方身份登录时,需要配置用户身份映射:

用户匹配规则

规则说明
按账号匹配第三方账号与平台账号相同
按邮箱匹配第三方邮箱与平台邮箱相同
按手机号匹配第三方手机号与平台手机号相同
按第三方ID匹配保存第三方用户唯一标识

权限同步

javascript
// 登录时同步第三方角色
function syncRolesFromThirdParty(thirdPartyRoles) {
  var roleMapping = {
    'wx_role_admin': 'admin',
    'wx_role_manager': 'manager',
    'wx_role_user': 'user'
  };
  
  var platformRoles = thirdPartyRoles.map(function(r) {
    return roleMapping[r] || r;
  });
  
  syncUserRoles(getCurrentUserId(), platformRoles);
}

多因素认证(MFA)

平台支持多因素认证增强账户安全:

javascript
// 检查是否开启 MFA
if (isMFAEnabled()) {
  // 发送验证码
  sendMFACode(function() {
    showMFADialog(function(code) {
      verifyMFACode(code, function(result) {
        if (result.success) {
          // 认证通过
        }
      });
    });
  });
}

安全相关

修改密码

javascript
// 验证原密码并修改密码
changePassword(oldPassword, newPassword, function(result) {
  if (result.success) {
    showMessage('success', '密码修改成功');
  } else {
    showMessage('error', result.message);
  }
});

登出

javascript
// 退出登录
logout(function() {
  showMessage('success', '已退出登录');
  redirectToLogin();
});

// 强制登出(管理员可用)
forceLogout(userId, function() {
  console.log('已强制用户下线');
});

注意事项

  1. 第三方集成需要在对应的平台配置回调地址和授权域名
  2. 敏感操作(修改密码、删除数据)建议二次验证身份
  3. 建议配置登录失败次数限制和账户锁定策略
  4. 所有身份验证逻辑应在后端完成,前端只做跳转和展示
  5. 单点登录的 Token 应设置合理的过期时间

基于 MIT 许可发布