我正在尝试将所有用户上载到keycloak用户列表的代码,并且效果很好。我使用了一个excel文件来读取然后将每一行推送到keycloak字段中,但是我正在考虑同时向每个用户添加角色。当我尝试这段代码时,它说角色字段在用户中不存在,并给我错误
这是我的代码
从Excel读取并存储在数组中
let path = 'http://localhost:8080/auth/admin/realms/msportal';
let _userTobeCreated = ReadFromExcel('./uploads/employees-roles.xlsx');
function ReadFromExcel(filename) {
let userTobeCreated = []
xlsxFile(filename).then((rows) => {
rows.forEach(row => {
let userObject = {
username: row[0],
lastName: row[1],
firstName: row[2],
email: row[3],
roles: row[4].split(',')
}
userTobeCreated.push(userObject);
});
})
return userTobeCreated;
}
创建功能
function CreateKCBulkUser(user) {
let urlCreateUser = `${path}/users`;
return axios({
method: 'post',
url: urlCreateUser,
data: JSON.stringify(user),
headers: {
'content-type': 'application/json',
'Authorization': `Bearer ${kc_accessToken}`
}
})
.then(function (response) {
console.log("User created!!");
_userlists = response.data;
})
.catch(function (error) {
console.log(error);
});
}
呼叫功能
_usersToBeCreated.forEach((v)=>{
CreateKCBulkUser(v);
})
excel文件
答案 0 :(得分:0)
角色不是user
实体的一部分。首先,您必须创建role
实体,然后才需要创建role-mapping
。参见API doc。
顺便说一句:role
的定义很模糊,因为Keycloak具有真实的角色/客户角色+我将使用keycloak-nodejs-admin-client而不是普通的axios请求。