Size: a a a

Java/Kotlin and more

2021 January 12

YG

Yury Golikov in Java/Kotlin and more
Edem Injection
да, это понимаю.

у меня в дб объекты, с именем юзера кто их создал. Сами объекты достаются из бд по их ид, которых приходит по ресту. То есть юзер может и чужой объект достать главное ид подставить... вопрос в том, нужно ли постоянно проверять соответсвие того, кто запрашивает с тем ,что он запрашивает? то есть проверять, что чувак с токеном ххх и ид 10 запрашивает объекты, создателем которых был чувак с ид 10, то есть он сам, а не чьи-то другие объекты...
Для этого есть ACL
источник

VS

Vlad Shevchenko in Java/Kotlin and more
ПРивет, подскажите плз. Как правильно ответить если юзера нету - 404 Not Found или [ ]  или пустой лист
/users/{userId}/role-mappings?type=ADMIN
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Vlad Shevchenko
ПРивет, подскажите плз. Как правильно ответить если юзера нету - 404 Not Found или [ ]  или пустой лист
/users/{userId}/role-mappings?type=ADMIN
нет пользователя - 404, нет ролей у пользователя - пустой список
источник

aa

aitken azamat in Java/Kotlin and more
Vlad Shevchenko
ПРивет, подскажите плз. Как правильно ответить если юзера нету - 404 Not Found или [ ]  или пустой лист
/users/{userId}/role-mappings?type=ADMIN
204 no content
источник

V

Vlad in Java/Kotlin and more
Edem Injection
у меня есть в дб штуки которые принадлежат конкретным пользователям.
например get /api/cookie/13 куки 13го юзра, теоретически юзер может подменить 13 на 14, и достать чужие куки из бд,
если правильно понимаю, чтоб такого не было, я должен везде, где такое возможно в контроллерах проверять на соответсвие юзерИД и токена и если отличаются отдавать что-то типо форбидден?
У тебя не совсем верный подход,  если ты хочешь,  чтобы юзер получил СВОИ куки,  смысл доставать данные из id запроса.  У тебя в контексте есть вся инфа,  о залогиненом юзере.  Просто из принципала   ищешь нужное в бд и все
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
aitken azamat
204 no content
как вариант
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
интересно, спасибо!
источник

НП

Надежда Петровская... in Java/Kotlin and more
День добрый) Всем отличного настроения и продуктивного начала нового года!💪😁☀️

В поиске спецов на вакансию)

JAVA SENIOR
ЗП  300-450 тр
Удалёнка (Москва +-2ч)
Фуллтайм


#вакансия #работа #удаленка #remote #job #java #backend #fulltime #spring

В крупную международную компанию на highload проект ищем старшего Java-разработчика. Нам нравится создавать быстрые и надёжные системы, которые отвечают потребностям бизнеса. Опыт работы в индустрии ставок или онлайн-платежей будет огромным плюсом)

От нас:От нас:
- сложные, ответственные и интересные задачи, гарантирующие профессиональный рост
- работа на современном стеке
- быстрые процессы согласования рабочих моментов
- белая зп

Стек технологий, навыки:Стек технологий, навыки:
- Java 8, Spring 4
- опыт работы с highload
- понимание SQL и NoSQL, их преимуществ и недостатков
- глубокое понимание принципов работы современных веб-технологий
- JMX, Zabbix, New Relic - желательно
- английский язык от В2 и выше
- опыт работы в индустрии
ставок или онлайн платежей будет большим плюсом

По всем вопросам пишите-звоните на номер +79045538033 (WhatsApp, Telegram, Viber - Надежда).

tg @NadiaPetr

Резюме туда же или на почту
petrovskaya.na@smarthiring.pro
+79045538033 (WhatsApp, Telegram, Viber - Надежда).

tg @NadiaPetr

Резюме туда же или на почту
petrovskaya.na@smarthiring.pro
источник

AS

Anatoly Shirokov in Java/Kotlin and more
Ребят, spring boot + rest api. Выбрасываю RunTimeException с текстом ошибки, но на клиент приходит:
{"timestamp":"2021-01-12T11:37:31.487+00:00","status":500,"error":"Internal Server Error","message":"","path":"/echo"}
пусто тело message. Это настраивается?
источник

AS

Anatoly Shirokov in Java/Kotlin and more
Anatoly Shirokov
Ребят, spring boot + rest api. Выбрасываю RunTimeException с текстом ошибки, но на клиент приходит:
{"timestamp":"2021-01-12T11:37:31.487+00:00","status":500,"error":"Internal Server Error","message":"","path":"/echo"}
пусто тело message. Это настраивается?
настраивается:
server:
   error:
       include-message: always
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
Anatoly Shirokov
Ребят, spring boot + rest api. Выбрасываю RunTimeException с текстом ошибки, но на клиент приходит:
{"timestamp":"2021-01-12T11:37:31.487+00:00","status":500,"error":"Internal Server Error","message":"","path":"/echo"}
пусто тело message. Это настраивается?
в спринге есть вроде ResponseStatusException, чет такое. там можно сразу код хттпшный указать и месаж
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
но это конечно если из контроллера кидать конечно, из сервисного слоя такое себе)
источник

AS

Anatoly Shirokov in Java/Kotlin and more
Vitaly Sirotkin
в спринге есть вроде ResponseStatusException, чет такое. там можно сразу код хттпшный указать и месаж
Да, спасибо, просто эксперемнтировал с дефолтным
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
я вообще предпочитаю копипастить свой exception handler который я написал год назад из проекта в проект
источник

EI

Edem Injection in Java/Kotlin and more
Vitaly Sirotkin
я вообще предпочитаю копипастить свой exception handler который я написал год назад из проекта в проект
поделись)))))))))))))))
источник

АВ

Алексей Васин... in Java/Kotlin and more
Vitaly Sirotkin
я вообще предпочитаю копипастить свой exception handler который я написал год назад из проекта в проект
у нас тоже все так делают))
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Надежда Петровская
День добрый) Всем отличного настроения и продуктивного начала нового года!💪😁☀️

В поиске спецов на вакансию)

JAVA SENIOR
ЗП  300-450 тр
Удалёнка (Москва +-2ч)
Фуллтайм


#вакансия #работа #удаленка #remote #job #java #backend #fulltime #spring

В крупную международную компанию на highload проект ищем старшего Java-разработчика. Нам нравится создавать быстрые и надёжные системы, которые отвечают потребностям бизнеса. Опыт работы в индустрии ставок или онлайн-платежей будет огромным плюсом)

От нас:От нас:
- сложные, ответственные и интересные задачи, гарантирующие профессиональный рост
- работа на современном стеке
- быстрые процессы согласования рабочих моментов
- белая зп

Стек технологий, навыки:Стек технологий, навыки:
- Java 8, Spring 4
- опыт работы с highload
- понимание SQL и NoSQL, их преимуществ и недостатков
- глубокое понимание принципов работы современных веб-технологий
- JMX, Zabbix, New Relic - желательно
- английский язык от В2 и выше
- опыт работы в индустрии
ставок или онлайн платежей будет большим плюсом

По всем вопросам пишите-звоните на номер +79045538033 (WhatsApp, Telegram, Viber - Надежда).

tg @NadiaPetr

Резюме туда же или на почту
petrovskaya.na@smarthiring.pro
+79045538033 (WhatsApp, Telegram, Viber - Надежда).

tg @NadiaPetr

Резюме туда же или на почту
petrovskaya.na@smarthiring.pro
Java 8, spring 4, ещё наверно и без бута. Тяжело найти будет)
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
Edem Injection
поделись)))))))))))))))
@ControllerAdvice
class GlobalExceptionHandler {

   @ExceptionHandler(
       ServerWebInputException::class,
       HttpMessageNotReadableException::class
   )
   @ResponseBody
   fun handleHttpMessageNotReadableException(e: Exception): ResponseEntity<ErrorDTO> {
       logError("Bad Request", e)
       val message = when (val cause = e.cause?.findCause()) {
           is InvalidFormatException -> "Can't read value '${cause.value}' for field '${cause.path.errorPath()}'"
           is MissingKotlinParameterException -> "Missing required field '${cause.path.errorPath()}'"
           is ServerWebInputException -> cause.reason
           else -> cause?.message ?: e.message
       }
       return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ErrorDTO(REQUIRED_PARAMETER_ABSENT, message))
   }


   @ExceptionHandler(
       WebExchangeBindException::class
   )
   @ResponseBody
   fun handleMethodArgumentNotValidException(e: WebExchangeBindException): ResponseEntity<ErrorDTO> {
       logError("Bad Request", e)
       val message = e.bindingResult.allErrors.joinToString(prefix = "Validation failure. ") {
           when (it) {
               is FieldError -> "Field '${it.field}': ${it.defaultMessage}"
               else -> it.defaultMessage.orEmpty()
           }
       }
       return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ErrorDTO(REQUIRED_PARAMETER_ABSENT, message))
   }


   @ExceptionHandler(
       Error::class,
       Exception::class
   )
   @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
   @ResponseBody
   fun internalServerError(e: Exception): ResponseEntity<ErrorDTO> {
       logError("Internal server error", e)
       return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
           .body(ErrorDTO(INTERNAL_SERVER_ERROR_CODE, e.message))
   }

   companion object : Loggable

}


private const val INTERNAL_SERVER_ERROR_CODE = "INTERNAL_SERVER_ERROR"
private const val REQUIRED_PARAMETER_ABSENT = "REQUIRED_PARAMETER_ABSENT"
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Vitaly Sirotkin
но это конечно если из контроллера кидать конечно, из сервисного слоя такое себе)
Можно кастомное исключение с аннотацией @ResponseStatus
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
Alexandr Emelyanov
Можно кастомное исключение с аннотацией @ResponseStatus
точн
источник