Метод onceUsingId
Метод onceUsingId применяется к фасаду Auth
и выполняет аутентификацию пользователя по его идентификатору
только для текущего запроса. В отличие от loginUsingId,
данный метод не сохраняет сессию и не запоминает пользователя,
что делает его идеальным для API-запросов или разовых проверок.
Первым параметром передаётся идентификатор пользователя,
вторым необязательным параметром - булево значение,
указывающее, следует ли запомнить пользователя.
Метод возвращает true или false в зависимости
от успешности аутентификации.
Синтаксис
<?php
Auth::onceUsingId($id, $remember);
?>
Пример
Давайте выполним однократную аутентификацию пользователя
с идентификатором 5:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
class UserController extends Controller
{
public function show($id)
{
if (Auth::onceUsingId($id)) {
$user = Auth::user();
echo "User authenticated: " . $user->name;
} else {
echo "User not found";
}
}
}
?>
При передаче идентификатора существующего пользователя:
"User authenticated: John Doe"
Пример
Давайте проверим аутентификацию пользователя с использованием параметра запоминания:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
class AuthController extends Controller
{
public function temporaryAuth($userId)
{
$user = User::find($userId);
if ($user && Auth::onceUsingId($userId, true)) {
echo "User " . $user->email . " authenticated temporarily";
return Auth::user();
}
echo "Authentication failed";
return null;
}
}
?>
Результат выполнения кода при успешной аутентификации:
"User john@example.com authenticated temporarily"
Пример
Давайте используем метод для проверки доступа к ресурсу в middleware:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class CheckUserAccess
{
public function handle($request, Closure $next, $userId)
{
if (Auth::onceUsingId($userId)) {
return $next($request);
}
return response('Unauthorized', 401);
}
}
?>
Смотрите также
-
метод
loginUsingId,
который выполняет аутентификацию по ID с сохранением сессии -
метод
once,
который выполняет однократную аутентификацию по учётным данным -
метод
user,
который возвращает текущего аутентифицированного пользователя -
метод
check,
который проверяет, аутентифицирован ли пользователь