2016-11-21 41 views
0

我已成功设置Laravel中间件,以检查用户是否第一次登录(通过简单检查$user->last_logged_in_date field中的空值)。我想要的是将这些新用户重定向到/password/reset视图,以便他们可以填写他们的电子邮件地址并获得发送给他们的链接。Laravel - 发生太多重定向

我收到的

重定向过多的消息时,出现了打开“本地主机:8000”

如果您打开被重定向到打开另一个页面 页面可能发生这种情况然后重定向到打开原始页面。

我的所有控制器都$this->middleware(['auth', 'new_user']);引用,我的中间件如下所示:

<?php 

namespace App\Http\Middleware; 

use Closure; 

use App\Http\Controllers\Auth; 


class CheckIfNewUser 
{ 
    public function handle($request, Closure $next) 
    { 
     $user = $request->user(); 

     if (! is_null($user->last_logged_in_date)) { 
      return $next($request); 
     } 

     return redirect('password/reset'); 
    } 
} 

任何指导意见?

+1

如果密码重置控制器也有'$ this->中间件(['auth','new_user']); '这会导致无限重定向 – Moak

+0

感谢您的回复。 密码重置控制器只有$ this-> middleware('guest'); 任何其他想法,我可能会出错? – Ows

+0

显示主页的控制器如何?有没有中间件? – Maraboc

回答

0

所以,如果我理解正确的密码重置控制器使用 guest中间件其希望用户不签字。 您已经创建了一个new_user中间件其踢当用户,但新的记录中。 因此,登录的新用户被发送到需要访客的重置控制器,您显然不是因为您已登录,所以它会将您发送回您的家庭控制器,该家庭控制器会检查并看到您是新用户,所以它发送给你的密码重置....你得到的图片:)

+0

Doh!我怎么看不到?非常感谢你的帮助! – Ows

+0

如果回答了它,请将答案标记为已接受。 – Moak