0

我正在使用 Laravel framework,我以前的 laravel 版本是 5.8,并且在我的中间件登录中

public function handle($request, Closure $next)
{
    if(Auth::check())
    {
        return $next($request);
    }
    else
    {
        Session::put('url.intended',URL::previous());
        return redirect('/login');
    }
}

这是控制器登录控制器

if(Session::get('url.intended') <> '')
    return Redirect::to(Session::get('url.intended'));
else
    return redirect('/');

使用 laravel 5.8 中的此代码,一切正常,但是当我升级到 laravel 6 时,它不再工作了,我不知道为什么这里有任何帮助,谢谢,如果我来自任何链接,它总是将我重定向到 / 链接

4

1 回答 1

3

您可能应该让框架尽可能多地处理这些问题。如果您必须使用自己的中间件和控制器方法,仍然让框架尽可能地处理它。

处理预期的 URL 已经是框架能够自己完成的事情,并检查多个条件来解决这个问题。您可以使用guest重定向器的方法让它为您执行此操作:

return redirect()->guest('login');

这将负责重定向到“登录”并url.intended根据需要在会话中设置。

登录成功后,您可以将他们重定向到他们试图结束的位置、“预期”或后备 url:

return redirect()->intended('/');

这将重定向到它可以找到的“预期”,如果不使用后备。它还将从'url.intended'会话中删除密钥,因为它不再使用。无需自己设置或检查会话。

于 2019-10-27T19:39:12.870 回答