Я лично, как правило, сделать это в промежуточном слое, но вы также можете сделать это за пределами этого.
Вот пример промежуточного слоя:
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RequireHasLogin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check())
{
if (!Auth::guard($guard)->user()->has_login)
{
Auth::logout();
if ($request->ajax() || $request->wantsJson())
{
return response('Unauthorized.', 401);
}
return redirect()->guest('/auth/login');
}
}
return $next($request);
}
}
Хотя я думаю, что некоторые люди делают это слишком:
Auth::guard()->attempt(["email" => $email, "password" => $password, "has_login" => true])
Эта логика должна быть в Authenticate.php внутри папки Middleware. –
@MarkoMilivojevic Какая разница между Authenticate.php внутри папки Middleware и AuthController.php в контроллере? –
Поскольку каждый запрос проходит через это промежуточное программное обеспечение. Вы можете увидеть $ routeMiddleware в kernel.php. –