Проектная лаборатория
Собственный Redis
Этап 124 · Аутентификация
Аутентификация через AUTH
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете обязательную аутентификацию с помощью команды AUTH.
Аутентификация через AUTH
После успешной команды AUTH соединение аутентифицировано как указанный пользователь. Теперь оно может выполнять команды, которые раньше возвращали ошибки NOAUTH.
Например:
# Client 1
$ redis-cli
> ACL SETUSER default >newpassword
OK
> ACL WHOAMI
"default"
# Client 2 (new connection)
$ redis-cli
> ACL WHOAMI
(error) NOAUTH Authentication required.
> AUTH default newpassword
OK
# Client 2 is now authenticated as the 'default' user
> ACL WHOAMI
"default"Аутентификация действует в течение всего соединения: клиенту не нужно повторять её для каждой команды.
Проверки
Тестирующая система запустит программу так:
$ ./your_program.shЗатем выполнит команды через два разных клиента:
# Client 1
$ redis-cli
> ACL SETUSER default >newpassword
OK
> ACL WHOAMI
"default" # Still authenticated
# Client 2 (new connection)
$ redis-cli
> PING
(error) NOAUTH Authentication required.
> AUTH default newpassword
OK
> PING
PONGОна проверит, что:
- Новый клиент получает ошибку
NOAUTH, если пытается выполнять команды до аутентификации. - При успешной аутентификации команда
AUTHвозвращаетOKв формате простой строки. - После аутентификации клиент может успешно выполнять команды.
Примечания
- Все команды, кроме
AUTH, должны возвращать ошибкиNOAUTHпри вызове из неаутентифицированного соединения. Это относится ко всем реализованным командам, а не только кACL.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init redis ./my-redis --language go2. Откройте папку в IDE
cd ./my-redisРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage ws7Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.