我有以下问题。我正在开发一个使用 php 和 laravel 5.0.33 的网站。我有一台开发机器和一个 Web 服务器。
现在,我正在通过覆盖 AuthenticatesAndRegistersUsers
postRegister
方法拦截注册过程,但没有运气,因为拦截不是在服务器上执行的,在我的本地环境中一切都按预期工作。
我还在我的 AuthController 的 postRegister 方法上放置了一个die();
,该方法覆盖了上述特征上定义的方法,并且永远不会到达该行。
'Illuminate'Foundation'Auth'AuthenticatesAndRegistersUsers
上的原始性状方法:
public function postRegister(Request $request) {
$validator = $this->registrar->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$this->auth->login($this->registrar->create($request->all()));
return redirect($this->redirectPath());
}
<小时 />我在 'Project'Http'Controllers'Auth'AuthController
上的身份验证控制器中覆盖的方法:
use AuthenticatesAndRegistersUsers;
//Override of the register process
public function postRegister('Illuminate'Http'Request $request) {
die ('aqui');
}
那么,是什么阻止代码进入我的重写方法?在我的本地开发机器和服务器中,php 版本是相同的。
编辑:坏消息 如果我尝试在网站上登录用户,也会发生相同的行为,登录不是作为寄存器工作。请求永远不会到达控制器。这花了我一整天的时间....:(。在登录时,我还覆盖了一个方法。
因此,该错误是由于托管服务提供商在虚拟主机上完成的错误配置,其中所有请求 url 都会获得尾部斜杠,但如果完成 POST 请求并添加了尾部斜杠,则随后的重定向会将 POST 请求转换为 GET 请求。在向托管服务提供商解释两天后,我获得了修改虚拟主机配置的权限,并添加了一个规则以避免重定向 POST 请求。
这是修复之前的重定向:
# Enforce trailing slash policy
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /es/$1/ [L,R=301]
修复后的重定向:
# Enforce trailing slash policy
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /es/$1/ [L,R=301]
感谢大家的关注和回复。