在其他类的静态方法中调用重定向

时间:2018-08-30 12:30:53

标签: laravel

在我的控制器中,我调用一个外部静态方法,该方法检查用户状态,并尝试重定向,但失败。

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('/');
    }

}

我想念什么? 谢谢。

2 个答案:

答案 0 :(得分:1)

最好阅读文档并了解中间件的工作方式,因为将来它可能使您摆脱许多类似的麻烦。为了简洁起见,您始终可以重构代码,以便静态方法始终返回某些内容...

static public function redirect_if_not_logged_in()
{
    $check_login = Auth::check();

    if ($check_login === false) {
        return redirect('/');
    }
    return null;
}

然后检查该方法的响应是否不为null,以及是否不是从控制器返回的响应。

public function my_method()
{
    $results = SomeOtherClass::redirect_if_not_logged_in();

    if (null !== $results) {
        return $results;
    }
    // continue
}

答案 1 :(得分:0)

如果您在静态方法中中止,则不必担心返回重定向响应。这将允许您执行代码,而不是在控制器中进行身份验证检查。

static function redirect_if_not_logged_in()
{    
    if(!Auth::check()){
        abort(403);
    }
}