Подскажите пожалуйста. Как создать аутентификацию? Как правильно применить токен?
Пытался делать по вот этой доккментации
https://symfony.com/doc/current/security.html#auth...
namespace App\Controller;
use App\Entity\User;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
/**
* The class is for api login
*/
class ApiLoginController extends AbstractController
{
#[Route('/api/login', name: 'api_login')]
public function index(#[CurrentUser] ?User $user): Response
{
if (null === $user) {
return $this->json([
'message' => 'missing credentials',
], Response::HTTP_UNAUTHORIZED);
}
return $this->json([
'user' => $user->getUserIdentifier(),
]);
}
}
В этом классе я пытаюсь залогинится. И вроде все ок.
Но как в другом классе пытаюсь получить авторизованного пользователя, результат пустой.
Вот например
class NewsController extends AbstractController
{
#[Route('/news', name: 'news')]
public function index(): Response
{
/** @var User $user */
$user = $this->getUser();
die(print_r($user));
return $this->json([
'message' => 'Welcome to your new controller!',
'path' => 'src/Controller/NewsController.php',
]);
}
}
Security.yaml
security:
enable_authenticator_manager: true
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
App\Entity\User:
algorithm: auto
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
providers:
# used to reload user from session & other features (e.g. switch_user)
app_user_provider:
entity:
class: App\Entity\User
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
lazy: true
provider: app_user_provider
json_login:
# api_login is a route we will create below
check_path: api_login
logout:
path: app_logout
Помогите пожалуйста.