解决RocketMQ-Dashboard开启登录认证后不生效
问题发现
在学习RocketMQ-Dashboard 时候,开启ACL认证后,访问页面不跳转登录页面。
使用版本号:
rocketmq-all-5.4.0-bin-release、rocketmq-dashboard-2.1.0
rocketmq-all-5.4.0-bin-release/conf/broker.conf,配置内容如下:
perl
# 启用认证
authenticationEnabled = true
authenticationMetadataProvider = org.apache.rocketmq.auth.authentication.provider.LocalAuthenticationMetadataProvider
# 启用授权
authorizationEnabled = true
authorizationMetadataProvider = org.apache.rocketmq.auth.authorization.provider.LocalAuthorizationMetadataProvider
# 初始化可视化管理员用户(首次启动自动创建,acl的账号密码)
initAuthenticationUser = {"username":"rocketmq","password":"12345678"}
# 组件间认证凭证(用于Broker主从同步、集群内部通信等)
innerClientAuthenticationCredentials = {"accessKey":"rocketmq","secretKey":"12345678"}
然后设置rocketmq-dashboard,开启登录认证(打开源码项目修改src/main/resources/application.yml),配置内容如下:
yml
rocketmq:
config:
namesrvAddrs:
- 127.0.0.1:9876
loginRequired: true
然后部署到服务器,执行命令:
先启动Name Server,执行命令:
bash
nohup sh bin/mqnamesrv &
再启动Broker,执行命令:
bash
nohup sh bin/mqbroker -n localhost:9876 -c ../conf/broker.conf &
然后启动rocketmq-dashboard:
bash
java -jar rocketmq-dashboard-2.1.0.jar
启动后访问http://ip:8082/地址直接进入首页,如图所示:

问题解决
最先开始以为是打包有问题,重试后依旧不生效。
然后问AI就跟我说是因为users.properties文件找不到、服务启动覆盖loginRequired,改为false,经过它介绍的一系列操作,依旧不生效。
然后我就给rocketmq-dashboard降级,下载了rocketmq-dashboard-2.0.0,配置内容跟上面一样,打包编译后,发布服务器。
然后访问http://127.0.0.1:8080/地址(该版本启动的端口默认8080),如图所示:

生效成功。但是我觉得这个页面不太好看,还是想换成最新版的(后续查看Github最新版貌似挺多坑的)。
然后我又去Github把源码下载下来,按照上面的配置和操作重新运行,该版本已经更新成rocketmq-dashboard 2.1.1-SNAPSHOT。
http://127.0.0.1:8082/地址,如图所示:

生效成功。
至于为什么
2.1.0版本开启验证后不跳转登录页面,估计是有BUG ,再2.1.1被修复了(不过还是建议使用2.0.0)。