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() 函数不起作用
在 Angular 6 中选择带有 RxJS 的状态不起作用