У нас есть сайт, где люди могут войти, используя hash
. У нас нет отдельных пользователей. Каждый, кто имеет действительный хэш , может войти в систему, и не важно различать, кто вошел в систему.
Я уже создал форму для получения хэша в контроллере. Вот упрощенный код:
public function index(Request $request) {
if ($request->isMethod('post')) {
$token = $request->request->get('token');
$hash = $request->request->get('hash');
if ($this->isCsrfTokenValid('login', $token) && $this->isHashValid($hash)) {
// redirect
}
// fail
}
return $this->render('login.html.twig', []);
}
Теперь в $this->isHashValid()
я уже могу сказать, действителен ли хеш. Но я не уверен, как authenticate
посетителю вручную:
isHashValid($hash) {
// pseudo-check for the question
if (in_array($hash, $hashes) {
// How to authenticate the user?
return true;
}
return false;
}
Я также обновил security.yaml , чтобы перенаправить unauthenticated
посетителей на стартовую страницу, которая уже работает:
security:
providers:
in_memory: { memory: ~ }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
form_login:
login_path: '/'
access_control:
- { path: ^/secured, allow_if: "is_authenticated()" }
Итак, мой вопрос: как я могу аутентифицироваться, а затем программно выйти из системы посетителя в Symfoy 4?
Нужно ли мне создавать класс User
, даже если у нас нет " реальных пользователей " в классическом смысле?