在我的控制器中,我调用一个外部静态方法来检查用户状态,它尝试重定向但是失败了。
public function my_method(){
SomeOtherClass::redirect_if_not_logged_in();
}
在SomeOtherClass中,代码是:
static function redirect_if_not_logged_in()
{
$check_login = Auth::check();
if($check_login === false){
return redirect('/');
}
}
我错过了什么?谢谢。
最好阅读文档并了解中间件的工作原理,因为它可能会在未来避免许多类似的麻烦。为简洁起见,您可以随时重构代码,以便静态方法始终返回一些内容......
static public function redirect_if_not_logged_in()
{
$check_login = Auth::check();
if ($check_login === false) {
return redirect('/');
}
return null;
}
然后检查该方法的响应是否为空,如果它不是从控制器返回。
public function my_method()
{
$results = SomeOtherClass::redirect_if_not_logged_in();
if (null !== $results) {
return $results;
}
// continue
}
如果您在静态方法中中止,那么您将不必担心返回重定向响应。这将允许您在控制器中执行超出身份验证检查的代码。
static function redirect_if_not_logged_in()
{
if(!Auth::check()){
abort(403);
}
}