laravel 6登录时转到以前的网址不起作用

Posted

技术标签:

【中文标题】laravel 6登录时转到以前的网址不起作用【英文标题】:laravel 6 when login go to previous url not working 【发布时间】:2020-02-23 05:22:32 【问题描述】:

我正在使用 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 时,它不再工作了,我不知道为什么 这里有任何帮助谢谢 如果我来自任何链接,它总是将我重定向到 / 链接

【问题讨论】:

身份验证中间件和登录控制器无需任何修改即可处理所有这些问题......您使用自定义中间件和控制器的任何原因? 没有没有 好吧,Url::previous 可以返回一个 url 到 '/',如果它找不到在会话中设置的引用者或以前的 url ...在这方面并不总是有以前的 url i echo Url::previous 它总是给我登录页面,这是最后一个 url 而不是真正的上一个 url 你在哪里回显Url::previous 【参考方案1】:

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

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

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

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

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

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

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

【讨论】:

以上是关于laravel 6登录时转到以前的网址不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用

Django导航网址不起作用

在 Angular 6 中选择带有 RxJS 的状态不起作用

为啥用facebook登录不起作用? (除了检查网址,如何调试这个问题?)

laravel 更新在登录功能中不起作用

多词干jquery表单不起作用