前言
在 Salesforce 的 UAT(用户验收测试)阶段,常常会遇到一个关键用户需要测试多个角色账号的场景。例如,一个 Key User 需要分别以销售代表、区域经理、财务人员等身份登录系统进行操作验证。
但出于安全考虑,我们通常不希望开放"Login As"功能给普通用户。这时,如何让 Key User 用同一个邮箱测试多个账号,同时又能区分不同角色呢?
本文将介绍一种实用的解决方案:通过 Apex 脚本批量修改用户邮箱和密码,为每个账号配置默认密码,并引导用户首次登录时修改密码。适用于多账号测试、沙盒初始化、数据准备等多种场景。
🧪 使用场景说明
假设我们需要创建三个用户账号:
- 用户 A(销售代表)
- 用户 B(区域经理)
- 用户 C(财务专员)
这三个账号都绑定到同一个 Key User 的邮箱地址(如 keyuser@example.com
),这样他们接收验证码、登录系统都更加方便。
然后我们分别为这些用户设置统一的默认密码,比如:DefaultPass@123
,并强制他们在首次登录后修改密码。
✅ 实现目标
- 将多个用户的邮箱统一改为 Key User 的邮箱
- 为每个用户设置统一的默认密码
- 强制用户首次登录时修改密码
- 提供完整的 Apex 示例代码,便于复制粘贴
🔨 技术实现步骤
Step 1:查询或创建用户
我们可以先根据用户名或别名查找用户,或者直接新建用户用于测试。
ini
// 创建用户示例(可选)
User testUser = new User(
Username = 'testuser01@example.com',
Email = 'keyuser@example.com',
FirstName = 'Test',
LastName = 'User01',
Alias = 'tuser1',
CommunityNickname = 'TUser01',
ProfileId = [SELECT Id FROM Profile WHERE Name = 'Standard User'].Id,
TimeZoneSidKey = 'America/New_York',
LocaleSidKey = 'en_US',
EmailEncodingKey = 'UTF-8',
LanguageLocaleKey = 'en_US'
);
insert testUser;
提示:你也可以从现有用户中筛选,比如通过自定义字段标记 UAT 用户。
Step 2:更新用户邮箱为 Key User 的邮箱
为了确保所有用户都能接收到同一封验证码邮件,我们将他们的邮箱统一设置为 Key User 的邮箱。
ini
List<User> usersToUpdate = [SELECT Id, Email FROM User WHERE Username IN (
'testuser01@example.com',
'testuser02@example.com',
'testuser03@example.com'
)];
for (User u : usersToUpdate) {
u.Email = 'keyuser@example.com';
}
update usersToUpdate;
Step 3:设置默认密码并强制首次登录修改密码
Salesforce 提供了两个非常有用的系统方法:
System.resetPassword(userId, sendEmail)
:触发密码重置流程,发送邮件(或不发送)System.setPassword(userId, password)
:直接设置密码(需权限)
我们可以结合这两个方法,来完成密码设置和强制修改需求。
java
String defaultPassword = 'DefaultPass@123';
for (User u : usersToUpdate) {
try {
// 标记为需要重置密码(即首次登录必须修改密码)
Auth.SessionManagement.logout(u.Id); // 可选:登出该用户
System.resetPassword(u.Id, false); // 不发送邮件,只标记为需重置
System.debug('用户 ' + u.Username + ' 密码已设置为默认值,并要求首次登录修改');
// 设置新密码
System.setPassword(u.Id, defaultPassword);
} catch (Exception e) {
System.debug('设置用户 ' + u.Username + ' 密码失败: ' + e.getMessage());
}
}
📌 总结:整个流程逻辑图
- 创建或筛选多个测试账号
- 修改邮箱为 Key User 的邮箱
- 设置默认密码
- 标记为"需重置密码"
- 用户首次登录时输入默认密码 → 系统提示修改密码 → 完成测试流程
📝 结语
通过 Apex 自动化设置用户邮箱和密码,可以极大提升 UAT 准备效率,减少人工操作错误,同时也满足了不让普通用户使用"Login As"的安全要求。
如果你正在负责 Salesforce 上线项目中的 UAT 支持工作,不妨尝试这个方案,相信它会成为你工具箱中的一把利器。