首页 > 解决方案 > Laravel 5.5:登录后如何停止重定向到上一页

问题描述

我正在使用 Laravel 默认身份验证当用户登录时,我将他/她重定向到 /dashboard 而不是 /home

在 RedirectIfAuthenticated 中更改此行

return redirect('/home);`

return redirect('/dashboard');

现在,如果用户点击另一个需要身份验证的 url,可以说 /abc 它会将用户重定向到登录,但是一旦他/她登录,它就会将用户带到 /abc 而不是 /dashboard(根据我的要求)我希望它总是每当他/她登录时将用户带到/dashboard,而不管他/她试图点击的上一页

任何人都知道要覆盖哪个功能或任何东西......

标签: laravellaravel-5laravel-authentication

解决方案


预期的 url 保存在会话中。因此,如果我们从会话中删除该值,用户将始终被重定向到默认路由。

在 中EventServiceProvider,为用户登录事件添加一个监听器。

前任:

'Illuminate\Auth\Events\Login' => [
     'App\Listeners\LogSuccessfulLogin',
],

现在您添加了事件,工匠可以使用php artisan event:generate( https://laravel.com/docs/5.8/events#generating-events-and-listeners ) 创建侦听器。在创建的 App\Listeners\LogSuccessfulLogin 文件的 handle 方法中,取消设置会话值url.intended,如下所示:

public function handle(Login $event)
{
   session()->remove('url.intended');
}

推荐阅读