В моем приложении Laravel я использую промежуточное программное обеспечение auth
, чтобы гарантировать, что только аутентифицированные пользователи могут достичь определенных маршрутов.
Итак, в моем routes/web.php
у меня есть что-то вроде этого:
Route::group(['middleware' => ['auth', 'user.required.fields']], function () {
}
Как вы можете видеть, я добавил дополнительное Middleware: user.required.fields
это выглядит так
<?php
namespace App\Http\Middleware;
use Closure;
class CheckUserRequiredFields
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(auth()->user()->has_filled_required_fields){
return $next($request);
}
else{
return redirect()->route('new-user');
}
}
}
Атрибут, о котором идет речь, выглядит следующим образом:
/**
* If the user has filled in their role, department and location, allow full access to the intranet
*
* @return void
*/
public function getHasFilledRequiredFieldsAttribute()
{
if ($this->role && $this->department && $this->location) {
return true;
} else {
return false;
}
}
Однако это вызывает бесконечный цикл.
Есть ли в промежуточном программном обеспечении auth
что-то, что могло бы вызвать это? Это похоже на то, что промежуточное программное обеспечение вызывает себя снова и снова.
Код будет правильно перенаправлен на route('new-user
) `, но затем повторно попадет на маршрут.