$route = new \Joomla\Router\Route(
['GET'],
'v1/helloworldapi/sayhello',
'api.onApiHelloworld',
[],
[
'component' => 'com_helloworldapi',
'format' => ['application/json'],
// 'public' => true // I want this OFF to require authentication
]
);
$router->addRoute($route);
< /code>
В моем обработчике событий я стараюсь получить аутентифицированного пользователя: < /p>
public function onApiHelloworld()
{
$app = \Joomla\CMS\Factory::getApplication();
$user = $app->getIdentity();
if ($user->guest) {
echo new \JResponseJson(['error' => 'Unauthorized'], 401);
} else {
echo new \JResponseJson(['id' => $user->id, 'name' => $user->name]);
}
$app->close();
}
< /code>
Поведение Я ожидаю: < /p>
- Если запрос включает в себя действительный X-Joomla-token для включенного токена API, запрос должен продолжить < /li>
и $ пользователь должен быть заполнен. /> < /ul>
Проблема: < /p>
$ Пользователь всегда является гостем, даже с правильным токеном в заголовке. < /li>
То же самое работает идеально для встроенных конечных точек, таких как /api/index.php/v1/users. -
Подробнее здесь: https://stackoverflow.com/questions/796 ... rvices-plu