Strapi5如何添加管理面板用户并赋予角色权限

75 阅读1分钟

我想开发一个管理公司的项目后台系统,想到了strapi,如何让公司每个员工能登录管理面板,如实研究下,具体实现是真的简单

开发环境

Node20、Mysql8.0、Strapi5

安装项目

pnpm create strapi

项目结构大概如下

image.png

创建自定义路由和控制器

  1. 创建文件 src/api/admin/controllers/admin.js
module.exports = {
  async createAdmin(ctx) {
    const { email, password } = ctx.request.body;

    // 验证必要字段
    if (!email || !password) {
      return ctx.badRequest('Email and password are required');
    }

    // 创建管理员用户
    try {
      const admin = await strapi.service('admin::user').create({
        email,
        password,
        firstname: 'yh', // 可选
        lastname: 'yh',   // 可选
      });
      return ctx.send({ message: 'Admin created', admin });
    } catch (error) {
      return ctx.internalServerError(error.message);
    }
  },
};
  1. 创建路由文件 src/api/admin/routes/admin.js
module.exports = {
  routes: [
    {
      method: 'POST',
      path: '/admin/create-admin',
      handler: 'admin.createAdmin',
      config: {
        policies: [], // 根据需要添加安全策略(如 IP 白名单)
      },
    },
  ],
};
  1. 注册路由
module.exports = {
  routes: require('./routes/admin'),
  controllers: require('./controllers/admin'),
};

放开接口权限

勾选然后保存即可

image.png

测试接口可用性

image.png

正常通过

登录面板

然后就可以正常登录面板了,还可以使用超级管理员设计角色,能看到那些面板内容

image.png

超级管理员编辑角色权限

image.png

整体用起来strapi5要比strapi4的版本简单友好,而且自定义接口写的代码变的更少了