我想开发一个管理公司的项目后台系统,想到了strapi,如何让公司每个员工能登录管理面板,如实研究下,具体实现是真的简单
开发环境
Node20、Mysql8.0、Strapi5
安装项目
pnpm create strapi
项目结构大概如下
创建自定义路由和控制器
- 创建文件 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);
}
},
};
- 创建路由文件 src/api/admin/routes/admin.js
module.exports = {
routes: [
{
method: 'POST',
path: '/admin/create-admin',
handler: 'admin.createAdmin',
config: {
policies: [], // 根据需要添加安全策略(如 IP 白名单)
},
},
],
};
- 注册路由
module.exports = {
routes: require('./routes/admin'),
controllers: require('./controllers/admin'),
};
放开接口权限
勾选然后保存即可
测试接口可用性
正常通过
登录面板
然后就可以正常登录面板了,还可以使用超级管理员设计角色,能看到那些面板内容
超级管理员编辑角色权限
整体用起来strapi5要比strapi4的版本简单友好,而且自定义接口写的代码变的更少了