在使用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'))) {
这里改好了就能上传了
在使用openbms的时候发现的Thinkphp action 大小写问题的更多相关文章
- thinkphp支持大小写url地址访问,不产生下划线
from:http://www.111cn.net/phper/thinkPhp/57748.htm 一.在配置文件中开启了thinkphp的大小写识别功能,使链接大小写都可以正常访问: ‘URL_C ...
- thinkphp action.class.php 学习
控制器类(Action) 描述 Description ThinkPHP Action控制器基类 抽象类 位置:ThinkPHP/Lib/Core/Action.class.php 声明: abstr ...
- thinkphp url大小写
系统默认的规范是根据URL里面的模块名.控制器名来定位到具体的控制器类的,从而执行控制器类的操作方法. 以URL访问 http://serverName/index.php/Home/Index/in ...
- thinkphp action参数绑定
参数绑定是通过直接绑定URL地址中的变量作为操作方法的参数,可以简化方法的定义甚至路由的解析. 参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块.控制器和操作名)和操作方法中的参数进行绑 ...
- 阿里云服务主机部署Thinkphp系统错误解决方案
最近在阿里云上购买了虚拟主机,于是有了把自己的网站挂在云上的冲动,那就行动呗.本来想的很简单,以为在修改数据库配置之后,将文件打包上传,然后就可以了,可在实际操作过程中,出现了很多问题,找了很多资料, ...
- ThinkPHP报Class 'Core\Log' not found竟然是由这个原因导致的
项目在开发阶段运行的好好的(Debug=true),上线后(Debug=false)其中有一个页面报“对不起,您的页面暂进无法找到!”错误.摸不清头脑,看看了这个页面也没有什么两样,可就是提示这句话, ...
- ThinkPHP v5.1.x POP 链分析
环境:MacOS 10.13 MAMAP Prophp 7.0.33 + xdebugVisual Studio Code前言我所理解的 POP Chain:利用魔术方法并巧妙构造特殊属性调用一系列函 ...
- thinkphp中array_diff运行无效 Invalid opcode 153/1/8
经本人查证,发现是thinkPHP优化导致的与array_diff冲突.thinkPHP 报的错:Invalid opcode 153/1/8.有谁知道原理的,说说,让俺也明白.
- zabbix3.0.4 探索主机Discovery自动发现agent主机和zabbix-agent自动注册详细图文教程
Zabbix 自动发现(Discovery)功能使用 随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添 ...
- zabbix系列(五)zabbix3.0.4 探索主机Discovery自动发现主机详细图文教程
Zabbix 自动发现(Discovery)功能使用 随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添 ...
随机推荐
- Docker 构建多平台镜像
构建多平台镜像的方法分为两种:一种是在不同平台的机器上分别构建并推送对应平台的镜像,然后通过 Docker Manifest 将两个镜像标签合并为一个.另一种是通过 Docker buildx 在一台 ...
- 【Python + Appium】之元素定位总结(更新)
一.ID定位 uiautomatorviewer里面的:resource-id driver.find_element(By.ID,"com.csks.businesses:id/tv_nu ...
- SciPy从入门到放弃
目录 SciPy简介 拟合与优化模块 求最小值 曲线拟合 线性代数模块 统计模块 直方图和概率密度函数 统计检验 SciPy简介 SciPy是一种以NumPy为基础,用于数学.工程及许多其他的科学任务 ...
- DataV兼容vue3的方法
发现问题 在使用vue开发大屏时,发现了一个很好用的可视化组件库DataV,不是阿里那个DataV哈,用vue2开发时都一切顺利,直到有一天升级项目到vue3时,发现一堆报错,后面查了下,好像是Dat ...
- rpm -Uvh *.rpm --nodeps --force
rpm -Uvh *.rpm --nodeps --force 含义:-U:升级软件,若未软件尚未安装,则安装软件.-v:表示显示详细信息.-h:以"#"号显示安装进度.--for ...
- div中多行内容垂直居中显示
div中多行内容垂直居中显示 一.css 样式 .wrap { height: 200px; width: 200px; border: 1px solid #232323; display: fle ...
- Angular 18+ 高级教程 – Animation 动画
前言 Angular 有一套 built-in 的 Animation 方案.这套方案的底层实现是基于游览器原生的 Web Animation API. CSS Transition -> CS ...
- 手搓大模型Task03:手搓一个最小的 Agent 系统
前言 训练一个大模型是一件高投入低回报的事情,况且训练的事情是由大的巨头公司来做的事情:通常我们是在已有的大模型基础之上做微调或Agent等:大模型的能力是毋庸置疑的,但大模型在一些实时的问题上, ...
- 【赵渝强老师】Oracle存储过程中的out参数
一.什么是存储过程 Oracle存储过程可以说是一个记录集吧,它是由一些PL/SQL语句组成的代码块,这些PL/SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取 ...
- 从SQL Server过渡到PostgreSQL:理解模式的差异
从SQL Server过渡到PostgreSQL:理解模式的差异 前言 随着越来越多的企业转向开源技术,商业数据库管理员和开发者也逐渐面临向PostgreSQL迁移的需求. 虽然SQL Server和 ...