重定向到用户尝试访问的 URL
使用场景:跳转到用户未登录前,尝试访问的
URL。
使用
-
先在中间件中使用
if (auth()->guard($guards)->guest()) { return redirect()->guest('login'); } -
再在用户登录验证通过后使用
return redirect()->intended('home')
原理解析
-
redirect()->guest('login)
会在session中存储一个值, 把用户要访问的地址存到session中$this->session->put('url.intended', $this->generator->full()); -
redirect()->intended('home')会把这个值取出来跳转到这个地址,如果没有就跳到默认地址$path = $this->session->pull('url.intended', $default);return $this->to($path, $status, $headers, $secure);
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 7年前 自动加精
关于 LearnKu
给楼主点个赞。。我突然意识到了我写的项目还有这个问题。。
这个方法确实简单省事,楼主真细心。
laravel 自带的 authentication 已经内置了这种跳转到之前的 url 功能。
如果想手动处理认证后的跳转,重写
authenticated方法,默认该方法是空的。我现在使用 redirect() 跳转的时候遇到问题 代码如下 if($rt) {
也跳了 但是 浏览器地址没有变 显示空白页 这是什么原因导致的呢
如果是Ajax请求,那么intended就无效了。因为redirect()好像不能用在于Ajax上。你们有办法没