Метод bearerToken
Метод bearerToken применяется к объекту запроса
и извлекает токен из заголовка Authorization,
имеющего формат Bearer <token>. Метод
автоматически удаляет префикс Bearer и
возвращает чистую строку токена. Если заголовок
отсутствует или имеет неверный формат, метод
возвращает null. Метод не принимает
параметров.
Синтаксис
<?php
$request->bearerToken();
?>
Пример
Давайте получим Bearer-токен из входящего запроса и выведем его в контроллере:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function show(Request $request)
{
$token = $request->bearerToken();
echo $token;
}
}
?>
Если запрос содержит заголовок:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Результат выполнения кода:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
Пример
Давайте проверим наличие токена и выполним действие в зависимости от результата:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ApiController extends Controller
{
public function authenticate(Request $request)
{
$token = $request->bearerToken();
if ($token) {
echo "Token found: " . $token;
} else {
echo "Token not found";
}
}
}
?>
Если запрос не содержит заголовок
Authorization:
"Token not found"
Пример
Давайте используем метод bearerToken для
авторизации через сервис с проверкой:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\AuthService;
class AuthController extends Controller
{
protected $authService;
public function __construct(AuthService $authService)
{
$this->authService = $authService;
}
public function validateToken(Request $request)
{
$token = $request->bearerToken();
if (!$token) {
return response()->json(['error' => 'Token required'], 401);
}
$user = $this->authService->getUserByToken($token);
if (!$user) {
return response()->json(['error' => 'Invalid token'], 401);
}
return response()->json(['user' => $user]);
}
}
?>
При запросе с валидным токеном:
"{\"user\":{\"id\":1,\"name\":\"user\"}}"
При запросе без токена:
"{\"error\":\"Token required\"}"