Appearance
用户身份识别
用户身份识别功能用于获取和验证当前登录用户的身份信息,以及支持第三方身份登录。
身份信息获取
获取当前用户信息
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 系统身份对接 |
| 伯俊分销 | 伯俊分销系统身份对接 |
| CAS | CAS 单点登录 |
| OAuth2 | 标准 OAuth2.0 登录 |
| LDAP | LDAP 目录服务认证 |
| 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('已强制用户下线');
});注意事项
- 第三方集成需要在对应的平台配置回调地址和授权域名
- 敏感操作(修改密码、删除数据)建议二次验证身份
- 建议配置登录失败次数限制和账户锁定策略
- 所有身份验证逻辑应在后端完成,前端只做跳转和展示
- 单点登录的 Token 应设置合理的过期时间