当前位置: 首页 > article >正文

【FastGPT】如何新增用户修改密码

【FastGPT】如何新增用户&修改密码

  • 摘要
  • 查看运行中的容器
  • 进入mongo容器
  • 登录mongo数据库
  • 切换数据库
  • 查询用户集合数据
  • 新增用户
  • 查询团队表数据
  • 创建团队
  • 查询团队成员集合数据
  • 把用户加入团队
  • FastGPT用户密码的加密规则介绍
  • 加密算法Java版参考代码&单元测试代码
  • 修改密码

摘要

关于FastGPT的部署,官方提供了docker-compose方式的部署文档,如果使用的是podmanpodman-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!@登录了


http://www.kler.cn/a/572064.html

相关文章:

  • Java 大视界 -- Java 大数据中的联邦学习激励机制设计与实践(111)
  • 从设计稿到代码:DeepSeek-VL 的 AI 驱动 UI 开发实践
  • Linux的用户与权限--第二天
  • Ubuntu问题 - 在ubuntu上使用 telnet 测试远程的IP:端口是否连通
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.4.2内存与磁盘配置陷阱
  • 如何快速上手RabbitMQ 笔记250304
  • docker引擎备份及解决拉取失败的问题
  • Android Trace埋点beginSection打tag标签,Kotlin
  • 设置 CursorRules 规则
  • mybatis映射文件相关的知识点总结
  • 我们应该如何优化UI(基于UGUI)
  • 32.C++二叉树进阶1(二叉搜索树)
  • LLM实践——DeepSeek技术报告学习(含实现逻辑梳理)
  • Http、tcp、https、socket、tomcat、长短连接等总结回顾
  • 【深度学习】循环神经网络案例讲解-基于 PyTorch 的中文歌词生成——RNN,LSTM,GRU 从数据预处理到预测全流程详解
  • JAVA最新版本详细安装教程(附安装包)
  • Vue前端开发- Vant之Card组件
  • 批量清空 Word 标题、主题、标记、作者、总编辑时间等元数据
  • 从零手撸工业级Qt文件传输系统:TCP粘包/断点续传/SSL加密全解
  • js环境/electron环境,使用typeorm+sqlite数据库