Laravel中的多个动态URL重定向

时间:2016-05-28 20:39:20

标签: php laravel redirect laravel-5

我已经看过很多类似的问题但他们没有解决真正的问题。我想在登录后将用户重定向到某个URL,具体取决于用户的条件。

我知道这可以用中间件来实现,所以我在app \ Http \ Middleware \ RedirectIfAuthenticated.php

中试过这个
class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::User()->check()) {
            $redirect = '/client';
            if (Auth::user()->hasRole('admin')){
                $redirect = '/admin';
            }
            return redirect($redirect);
        }
        return $next($request);
    }
}

我现在意识到这在登录后不起作用。我想根据用户是管理员还是客户来重定向用户。我知道我可以使用:protected $ redirectPath =' / url / to / redirect&#39 ;;但是我有多个页面要重定向到。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

您可以覆盖 app / Http / Controllers / Auth / AuthController.php

中特征提供的重定向方法
public function redirectPath()
{
    if (Auth::user()->hasRole('admin')){
        return '/admin';
    }

    return '/client';
}

将它放在你的AuthController.php中。