<p>beego/admin 是 Beego 框架的插件而非独立服务,需集成到现有项目中:必须在 init() 中调用 admin.Run()(且在 beego.Router() 前),手动复制 static/admin/ 和 views/admin/,配置 app.conf 中的数据库参数与 RBAC 表名,并确保表结构与 rbac_* 配置项严格一致。</p>

直接装 github.com/beego/admin 就能用,但必须注意它不 standalone 运行,而是作为插件集成进已有 Beego 项目里;单独 go get 后不改代码、不配路由、不复制静态资源,访问不到任何页面。
beego/admin 不是独立服务,而是依赖主项目的 Router 和 Static
它没有自己的 main.go,也不监听端口。实际行为是:注册一组预定义的路由(如 /admin/login)、挂载控制器、读取 conf/app.conf 中的数据库和权限配置,并复用主项目的 static/ 和 views/ 目录。
- 如果你执行了
go get github.com/beego/admin却没在routers/router.go里调用admin.Run(),后台完全不会启动 - 它默认查找
static/admin/和views/admin/,但这些目录不存在——你得手动从$GOPATH/src/github.com/beego/admin/static和views复制过去 -
admin.Run()必须在init()函数中调用,且要在beego.Router()之前,否则路由注册顺序错乱导致 404
数据库配置必须显式写进 app.conf,且只支持四种类型
beego/admin 的 RBAC 权限系统强依赖数据库,但它不自动建库建表,只在首次访问时尝试建表(需开启 db_autocreate = true)。你必须提前在 conf/app.conf 里填全连接参数:
- MySQL 示例:
db_host = localhost、db_port = 3306、db_user = root、db_pass = root、db_name = admin、db_type = mysql - PostgreSQL 需额外加
db_sslmode = disable,否则连接失败报ssl is not enabled on the server - SQLite3 使用
db_path = ./+db_name = admin.db,路径必须可写,否则初始化时报no such table: role - 不支持 MySQL 8.0+ 默认的
caching_sha2_password插件,得把用户认证方式切回mysql_native_password
权限配置项 rbac_* 必须与数据库表结构严格对应
它硬编码读取 rbac_role_table、rbac_node_table 等配置项的值作为表名,如果数据库里实际建的是 t_role,但配置写的是 rbac_role_table = role,就会一直报 table role doesn't exist。
- 默认表名是
role、node、group、user,SQL 文件在$GOPATH/src/github.com/beego/admin/sql/下,别漏执行 -
rbac_admin_user = admin表示用户名为admin的账号跳过登录验证——这个值必须和你插入user表里的username字段完全一致,区分大小写 -
not_auth_package = public,static是白名单包名,不是 URL 路径;如果控制器在controllers/api/下,但没加到该配置里,即使路由开放也会被重定向到登录页
最容易被忽略的是静态资源路径和表名映射——很多人卡在“页面空白”或“登录页 404”,其实只是 static/admin/ 缺文件,或是 rbac_user_table 配的表名和实际不符。它不报具体 SQL 错误,只静默 fallback 到错误模板。


















