【发布时间】:2019-01-22 19:36:21
【问题描述】:
当用户第一次通过电子邮件和手动给用户的密码登录时。他们需要被强制输入新密码(密码和确认密码 - 只有两个字段)。
我已经创建了一个中间件:
class FirstTimeLogin
{
public function handle($request, Closure $next)
{
if ($request->user()->first_time_login) {
return redirect()->route('setup-password');
}
return $next($request);
}
}
在Kernel.php 中我已经在$middlewareGroups 数组中添加了\App\Http\Middleware\FirstTimeLogin::class:例如:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\FirstTimeLogin::class
]
];
web.php 路由如下所示:
Route::group(['middleware' => ['auth']], function () {
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/password/setup-password', 'Auth\SetupPasswordController@resetPasswordFirstTime')->name('setup-password');
Route::post('/password/setup-password', 'Auth\SetupPasswordController@updatePassword');
});
问题是它在浏览器上多次重定向,导致浏览器出现ERR_TOO_MANY_REDIRECTS错误。如何解决这个问题?
【问题讨论】: