我已经看过很多类似的问题但他们没有解决真正的问题。我想在登录后将用户重定向到某个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 ;;但是我有多个页面要重定向到。
这样做的最佳方式是什么?
答案 0 :(得分:2)
您可以覆盖 app / Http / Controllers / Auth / AuthController.php
中特征提供的重定向方法public function redirectPath()
{
if (Auth::user()->hasRole('admin')){
return '/admin';
}
return '/client';
}
将它放在你的AuthController.php中。