Size: a a a

NestJS — русскоязычное сообщество

2020 March 06

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
типа токен заекспайрился, или токен отсутствует вообще, или подпись токена не верна
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
короче мне важно выбросить конкретную причину почему я юзера швыряю в 401 или 403
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Ihor Levchenko
а вообще нормальная ли практика из guard бросать исключение вместо простого return false?
не нормально
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
потому я юзал и интерцептор
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
у меня идея.. проверить токен, декодировать его.
и засунуть в req._payload данные
А потом уже в контроллере я достаю @AuthPayload() payload: IAuthPayload
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
и работаю
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
а хотя

Note that behind the scenes, when a guard returns false, the framework throws a ForbiddenException. If you want to return a different error response, you should throw your own specific exception. For example:
throw new UnauthorizedException();
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
а.. блин.. ты уже тоже бросил
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
потому что без этого гард не имел бы вообще никакого смысла и я бы описывал свой поведенческий декоратор
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
мерзко конечно, ну ладно
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
ну да, не сильно красиво получается.
Лучше бы они просто сделали правила что на возврат требовали бы какой-то undefined | HttpResponseSomething.. со статус кодом и ошибкой
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
хотя так тоже не очень красиво, потому что причина отказа может быть разной и ее надо уточнять
источник

A

Artem in NestJS — русскоязычное сообщество
Andrey Melikhov
мерзко конечно, ну ладно
Не вижу в этом проблемы. Как на меня, то Guard для того и создан, чтобы защитить ресурс или что еще и бросать конкретный эксепшн.
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Artem
Не вижу в этом проблемы. Как на меня, то Guard для того и создан, чтобы защитить ресурс или что еще и бросать конкретный эксепшн.
выбрасывать эксепшены на корректном поведении — так себе идея
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
Andrey Melikhov
выбрасывать эксепшены на корректном поведении — так себе идея
в смысле бросать эксцепшн на корректном поведении?
Исключения же сделаны для того чтобы прервать контекст выполнения и сказать что дальше выполнение невозможно, потому что… блабла.
источник

A

Artem in NestJS — русскоязычное сообщество
Andrey Melikhov
выбрасывать эксепшены на корректном поведении — так себе идея
Я не про корректное поведение, а бросать эксепшн именно когда не true. Если корректное поведение, то согласен - это не есть гуд.
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
эксепшены сделаны для исключительных ситуаций. Если мы ситуацию можем обработать и не успасть — она не является исключительной. Иначе эксепшен превращается в goto-программирование
источник

IL

Ihor Levchenko in NestJS — русскоязычное сообщество
и так по паттерну, вся цепочка прерывается в том числе и вызывающий код который не проверяет “что конкретно вернулось”, а просто прерывается так же и бросает событие то той иерархии вызова которая отвечает за управление контекстном исполнения - то есть до экспресса/файстифая
источник

AM

Andrey Melikhov in NestJS — русскоязычное сообщество
Мы считаем, что исключения должны редко использоваться как часть потока исполнения программы: исключения должны быть зарезервированы для непредвиденных событий. Предположите, что непойманное исключение прервёт программу и спросите себя: “Будет ли этот код работать, если я уберу все обработчики исключений?”.  Если ответ “нет”, то, вероятно, исключения используется не в исключительных ситуациях.
источник