在使用openbms的时候发现的Thinkphp action 大小写问题
下载了 https://gitee.com/openbms/openbms 看了看源代码,调试了一下普通用户的demo 用户 发现无法上传图片,admin不会,查看了源代码 发现是这样的
admin用户因为是管理员直接跳过权限检查了 代码在 application/common/controller/AdminBase.php
普通用户到
!in_array($this->request->action(), $this->noAuth)
检查失败 然后看了一下请求
/admin/index/uploadImage
请求地址和内容没问题 调试了一下代码 发现 当前action 和noAuth分别为
string(11) "uploadimage" array(6) { [0]=> string(5) "index" [1]=> string(11) "uploadImage" [2]=> string(10) "uploadFile" [3]=> string(11) "uploadVideo" [4]=> string(8) "iconLibs" [5]=> string(6) "logout" }
发现问题所在 request 得到的 action 被转了小写,没有驼峰法了,然后发现有人也遇到类似的问题 https://blog.csdn.net/weixin_30797199/article/details/96202967
然后就只要改一下这里就行了
其他几个上传 file 上传 video的同理。
不过这里的问题是TP核心对action 的处理的问题 我觉得可以把这里的action 请求都强制转小写 然后在判断,可以兼容两个版本。例如
patch 如下
diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php index 3c2baac..cbb6f39 100644 --- a/application/admin/controller/Index.php +++ b/application/admin/controller/Index.php @@ -12,10 +12,10 @@ class Index extends AdminBase ]; protected $noAuth = [ 'index', - 'uploadImage', - 'uploadFile', - 'uploadVideo', - 'iconLibs', + 'uploadimage', + 'uploadfile', + 'uploadvideo', + 'iconlibs', 'logout' ]; diff --git a/application/common/controller/AdminBase.php b/application/common/controller/AdminBase.php index 941adb6..ad3fc5e 100644 --- a/application/common/controller/AdminBase.php +++ b/application/common/controller/AdminBase.php @@ -33,8 +33,8 @@ class AdminBase extends Base public function checkAuth() { if (session('admin_auth.username') != config('administrator') && - !in_array($this->request->action(), $this->noLogin) && - !in_array($this->request->action(), $this->noAuth) && + !in_array(strtolower($this->request->action()), $this->noLogin) && + !in_array(strtolower($this->request->action()), $this->noAuth) && !(new \core\Auth())->check($this->request->module() . '/' . to_under_score($this->request->controller()) . '/' . $this->request->action(), session('admin_auth.admin_id'))) {
这里改好了就能上传了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2018-04-09 PHP计算两个绝对路径的相对路径