Laravel 5.2:“返回redirect()”在自定义事件处理程序中无法正常工作

时间:2016-05-12 16:38:37

标签: laravel redirect login event-handling laravel-5.2

在Laravel 5.2中,我有自定义事件处理程序(用于登录事件)。像这样:

protected $listen = [
    'Illuminate\Auth\Events\Login' => ['App\Listeners\UserLoggedIn'],
];

handle中有app/Listeners/UserLoggedIn.php函数:

public function handle(Login $event)
{
    /**
     * Some codes here
     */

    if ( $foo==$bar ) {
        //echo "I was here!";
        //exit;

        return redirect('mypage');
    }

}

mypage路由已正确定义,可以通过url手动调用。 (它运行)。所以mypage路线没有问题。

当触发事件时,即使进程处于return redirect('mypage');条件,一切都可以正常工作,IF除外。 (然后流程继续调用主页(默认)路由,而不是mypage路由。)

请问好吗?

1 个答案:

答案 0 :(得分:0)

我知道这不是最佳解决方案,但至少我发现了一种有效的解决方法。我不能在Handler(s)中使用Laravel的redirect(),而是使用PHP本机重定向,然后强制退出该函数。

像:

header("location: /mypage");
return;

至少它允许我在应该的位置停止功能,然后让我去我需要的地方。