【FastGPT】如何新增用户&修改密码
- 摘要
- 查看运行中的容器
- 进入mongo容器
- 登录mongo数据库
- 切换数据库
- 查询用户集合数据
- 新增用户
- 查询团队表数据
- 创建团队
- 查询团队成员集合数据
- 把用户加入团队
- FastGPT用户密码的加密规则介绍
- 加密算法Java版参考代码&单元测试代码
- 修改密码
摘要
关于FastGPT
的部署,官方提供了docker-compose
方式的部署文档,如果使用的是podman
和podman-compose
的同学,可以参考这篇文章【FastGPT】Linux系统使用podman-compose方式部署指南
部署好之后,发现FastGPT的用户管理功能比较简单,没有新增用户,也没有修改密码的功能。只有一个默认用户root
,默认密码1234
,因此,本文一步一步教你如何新增用户,以及如何修改密码。
查看运行中的容器
sudo podman ps
进入mongo容器
sudo podman exec -it mongo bash
成功进入容器后,命令行终端显示的信息会变化,如下图所示
登录mongo数据库
mongo --username fastgpt --password fastgpt --authenticationDatabase admin
有些审计要求的终端不允许直接输入密码,那就分两步输入命令
mongo --username fastgpt
然后命令行会再提示输入密码,成功进入数据库后会显示如下信息
切换数据库
use fastgpt
查询用户集合数据
db.users.find().pretty();
我们可以看到系统默认的root
用户和密码
新增用户
新增一个demo
用户,密码是密文,先复制root
的密码,后面再讲密码的加密规则
db.users.insert({
username: "demo",
password: "756bc47cb5215dc3329ca7e1f7be33a2dad68990bb94b76d90aa07f4e44a233a",
status: "active",
avatar: "/icon/human.svg",
balance: NumberInt("100000"),
promotionRate: NumberInt("10"),
timezone: "Asia/Shanghai",
createTime: new ISODate()
});
这个时候还无法登录,因为
demo
用户没有加入任何团队,因此,需要先创建团队,再把用户加入团队。
查询团队表数据
db.teams.find().pretty();
可以看到,系统默认只有一个My Team
团队
创建团队
db.teams.insert({
name: "运维团队",
ownerId: db.users.findOne({username:"demo"}, {_id:1})._id, // 新创建用户的ObjectId
avatar: "/icon/logo.svg",
createTime: new ISODate(),
});
查询团队成员集合数据
db.team_members.find().pretty();
把用户加入团队
db.team_members.insert({
teamId: db.teams.findOne({name:"运维团队"}, {_id:1})._id, // 团队的ObjectId
userId: db.users.findOne({username:"demo"}, {_id:1})._id, // 用户的ObjectId
name: "Owner",
role: "owner",
status: "active",
createTime: new ISODate(),
defaultTeam: true
});
完成这一步,就可以使用demo
用户登录了
FastGPT用户密码的加密规则介绍
- 使用
SHA-256
算法对1234
进行hash
- 把
hash
值转成十六进制字符串 - 把得到的字符串,再重复一次以上两个步骤
- 加密算法在源码中的位置:
https://github.com/labring/FastGPT/tree/main/packages/global/common/string/tools.ts
,第12行
加密算法Java版参考代码&单元测试代码
@SneakyThrows
@Test
void testFastGPTPassword() {
String text = "1234";
String testResult = cryptPassword(cryptPassword(text));
assertEquals("756bc47cb5215dc3329ca7e1f7be33a2dad68990bb94b76d90aa07f4e44a233a", testResult);
text = "#demo01!@";
String newPassword = cryptPassword(cryptPassword(text));
log.info("newPassword: {}", newPassword);
}
// FastGPT 密码加密算法
@SneakyThrows
private static String cryptPassword(String text) {
// 创建 MessageDigest 实例,指定使用 SHA-256 算法
MessageDigest md = MessageDigest.getInstance("SHA-256");
// 更新 MessageDigest 实例,传入要哈希的字符串的字节
md.update(text.getBytes());
// 完成哈希计算,返回结果是一个字节数组
byte[] digest = md.digest();
// 将字节数组转换为十六进制字符串
return HexUtil.encodeHexStr(digest);
}
输出新密码
newPassword: 73b30f4023367b065ad0e01d958fb0d25f43e179dc6eb63b45fb4d068bf98fb0
修改密码
使用上面的新密码进行更新
db.users.updateOne({username: "demo"}, {
$set: {password: "73b30f4023367b065ad0e01d958fb0d25f43e179dc6eb63b45fb4d068bf98fb0"}
});
然后就可以使用新密码#demo01!@
登录了