在我的控制器中,我调用一个外部静态方法,该方法检查用户状态,并尝试重定向,但失败。
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('/');
}
}
我想念什么? 谢谢。
答案 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);
}
}