Проверка прав доступа это просто пример. Самый очевидный, но пример.
Никто не мешает так валидировать обычные параметры. Когда по каким-то соображениям передается не объект, а пачка переменных.
Там какой-нибудь: /edit/setExternalLinkTo/anotherEntityId
Возвращать 400 нехорошо, а проверить существование сущности перед началом обновления объектов хочется.
Java EE вообще оказалась неудачной концепцией. JSR гораздо удобнее.
Ну тоже вариант. Мне ближе вариант все что можно повесить на аннотации и по максимуму задействовать функционал уже подключенных библиотек. Иногда это требует доработки напильником. Порог входа повышается, зато мест где можно сделать трудноуловимые ошибки становится гораздо меньше. Хотя и ловить их временами сложнее.
Получения объекта из хранилища это настолько типовая и дублирующаяся в куче мест операция что о ней можно не беспокоиться. Она должна работать, проверяться тестами и кешироваться. Правки затрагивающие ее не должны ломать существующий код.
Все остальное только в одном месте. Отдельно проверка прав доступа. Отдельно работа с объектом.
Вы мало проектов на Спринге видели. @Validated это понятнее некуда. Самое простое и элегантное решение. Проверка в каждом методе и создание сообщений об ошибках во вью тоже в каждом методе, выходит в конечном итоге сложнее и потенциально содержит больше ошибок.
И обвязка это самое простое из того что я нашел в залежах «нестандартного Спринга». Все остальное там гораздо сложнее. Проблемы вида совместить windows domain sso и spring form authorization и заставить все это работать работать на виндовом кластере решаются гораздо сложнее. Там такие дебри…
С методами findByUsernameAndId(username, id) проверяюшими права возникает проблема когда надо делать доступ без пользователей. К примеру, автоматические выгрузки и тому подобные сервисные операции.
Приходится или разрешать username==null и давать доступ ко всему, что черевато дырами при ошибках в контроллерах.
Или заводить технические учетные записи, что вызывает проблемы управления и поддержки.
Или писать рядом такие же методы, не проверяющие права. Плохо само по себе.
Вариант findById(id) не проверяющее никаких прав и проверка прав на уровне контроллеров выглядит гораздо лучше.
В смысле зачем? Сценарий с доступом пользователя не ко всем сущностям одного типа очень стандартный.
От документооборотов (не все документы доступны) до форумов (не все разделы доступны) везде встречается.
Разрулить это спринговыми ролями невозможно. Доступ к методу у пользователя должен быть.
Бизнес логика это действия чтобы собрать и отдать этот объект. Неправильно в ней писать проверку прав пользователя.
А зачем админские права чтобы файликами кидаться? Есть аккуратненькая дырочка сквозь вот это вот все чтобы можно было передавать файлы. Без этого встает рабочий процесс. По регламенту работать невозможно.
Вот это я люблю. Одобренные местными админами! Как серьезно звучит. Как будто хоть один админ или даже целый отдел способен разобраться хотя бы в MS или Оракловых апдейтах. Не говоря уже обо всем остальном софте. Никто ни в чем естественно не разбирается. И даже не пытается разобраться. Хорошо если ставят достаточно быстро. Или не ставят и ловят шифровальщиков. В итоге дополнительный геморрой для админов на пустом месте.
Всем кому надо по работе, а это большая часть сотрудников уровнем выше дворника, приходят местные айтишники и все настраивают сами. И софт ставят и дырочку для передачи файлов делают. По негласному распоряжению руководства. Работать как-то надо.
Тогда ставится рядом второй ноутбук с обычным 4Г.
Не работает вся эта схема с митм. Поставить можно. Внедрить можно. А работать не будет. В лаборатории без проблем, на реальных сетях не работает.
Сеть без интернета без проблем работает. Сценарий точно такой же. Рядом стоит ноутбук с 4Г. Только добавляется куча гемороя с обновлением всего и вся. Или пишутся смешные документы что мол у нас интернета нет и вообще все защищено и обновлений нам не надо. Живут такие документы до первого шифровальщика.
Ну не флешки, так какая-нибудь хитрая почта или шара в сети через которую все что угодно переслать можно. Проблема с невозможностью пересылки решается примерно через неделю-две после внедрения вот этого вот всего. Рабочий процесс встает и все быстро решается. Неофициально естественно.
Вы неверно мысль сформулировали.
Правильно будет так: Корпоративная среда (в вашем понимании этих слов) несовместима с современным миром. Без мобильных устройств сейчас и жизнь и работа просто невозможны.
И естественно никто ничего не расшифровывает и сертификаты не подменяет. Есть какое-то количество неадекватных фирм, я подозреваю что госы сплошь, которые могут такой фигней заниматься. С ними лучше не связываться. Если пришлось по проекту с ними общаться, то это обычно бывает так: Есть супер защищенная с митм сеть. А есть рядом стоящие ноутбуки на которых все и работают. Они смотрят в Интернет через обычный 4Г. И если что-то нужно в супер защищенной сети просто через флешку копируют.
И с почтой все забавно.
— Куда вам написать? Вот на этот адрес с визитки?
— Это рабочий вы лучше на него не пишите, он работает плохо. И не пропускает ничего. Пишите сюда на мой личный. И дают обычный gmail.
А чего спорить? История уже доказала что оно просто начнет работать у всех с какого-то момента. Как HTTPS. Очень долго говорили: Ну зачем? Большинству сайтов нечего шифровать. Это медленно, долго и сложно. Прошло время и теперь сайтов без HTTPS просто не осталось.
Люблю я такие прохладные истории. А теперь вспоминаем что сейчас век мобильных устройств. Все сидят в телефонах. Про политики сразу забываем. Про отключение в настройках так же забываем. 95% пользователей используют все по умолчанию. И если не работает сильно ругаются. Представить себе полезный и нужный по работе сайт использующий ESNI очень просто. Админ заблокировавший такое быстро оправится на ковер к начальству, а потом на мороз.
А еще больше я люблю вообще морозные истории про «полноценная HTTPS инспекция» ее никто никогда не видел, но все пугают.
Про блок по IP я написал. Никто ничего у себя включать/выключать не будет. Те кто на такое способны поставят vpn, остальные будут ругаться. Владельцы заблокированных до кучи сайтов буду судиться.
С депутатами/президентами все гораздо сложнее. Им надо пройти через выборы.
Им надо понравиться не конкретным людям (весьма вероятно что приятным и разбирающимся в деле), а большинству населения страны/региона. Да, и вот тому алкоголику Васе тоже надо понравиться.
Не дай бог таких собеседований и тестовых заданий как у них.
На конвейер ответят решениями в стиле: Собеседование и получение тестового задания не имело желания устраиваться на работу, а имело преступный умысел на подачу заявления в суд.
Да и откуда эти околокриминальные элементы возьмут оптом людей способных осмысленно поговорить о разработке? Хотя бы на уровне умного третьекурсника. С хорошими документами, трудовыми итп. Не забываем что профит десятки тысяч с каждого человека. Чтобы был смысл нужны хотя бы сотни таких.
Ну попадется. Ну отплатят ему тысяч 20, да даже 50 через год судов. От этого ни одна фирма не обеднеет. А человек попадет в черный список. Не брать никуда. Даже не собеседовать. И кому все это нужно?
Случайному дворнику с улицы тестовое задание, которое может потянуть на неделю, не дадут. Он завалится на разговоре до тестового задания. А человеку со знаниями такое приключение даром не нужно.
Не требуются. Вы работать хотите или судиться?
Не хотите делать тестовое задание или считаете что оно неадекватно? Просто уходите и идете к следующему.
Простые примеры.
Выборы. 3 партии. 45, 40 и 15 процентов. Не вглядываясь в циферки понять есть ли большинство у одной партии невозможно.
Те же выборы. 30 и 30 у двух партий. Остальные 40 у 5 мелкий партий. Понять могут ли эти 2 партии сформировать большинство не вглядываясь в циферки невозможно.
На круговых это все будет видно в первого взгляда. Циферки и подписи не критичны.
Хорошо замечено. На любимых автором столбчатых диаграммах долю показать невозможно.
На круговой диаграмме должно быть не больше 3-4 разных значений и она должна показывать какие проценты от общих 100% эти значения занимают. Тогда все будет наглядно и полезно.
Никто не мешает так валидировать обычные параметры. Когда по каким-то соображениям передается не объект, а пачка переменных.
Там какой-нибудь: /edit/setExternalLinkTo/anotherEntityId
Возвращать 400 нехорошо, а проверить существование сущности перед началом обновления объектов хочется.
Ну тоже вариант. Мне ближе вариант все что можно повесить на аннотации и по максимуму задействовать функционал уже подключенных библиотек. Иногда это требует доработки напильником. Порог входа повышается, зато мест где можно сделать трудноуловимые ошибки становится гораздо меньше. Хотя и ловить их временами сложнее.
Все остальное только в одном месте. Отдельно проверка прав доступа. Отдельно работа с объектом.
Новый человек должен быть в курсе таких вещей.
Захотелось на русском написать. А кроме Хабра некуда.
И обвязка это самое простое из того что я нашел в залежах «нестандартного Спринга». Все остальное там гораздо сложнее. Проблемы вида совместить windows domain sso и spring form authorization и заставить все это работать работать на виндовом кластере решаются гораздо сложнее. Там такие дебри…
Приходится или разрешать username==null и давать доступ ко всему, что черевато дырами при ошибках в контроллерах.
Или заводить технические учетные записи, что вызывает проблемы управления и поддержки.
Или писать рядом такие же методы, не проверяющие права. Плохо само по себе.
Вариант findById(id) не проверяющее никаких прав и проверка прав на уровне контроллеров выглядит гораздо лучше.
Второе обращение к документу не будет стоить практически ничего, по сравнению с первым.
От документооборотов (не все документы доступны) до форумов (не все разделы доступны) везде встречается.
Разрулить это спринговыми ролями невозможно. Доступ к методу у пользователя должен быть.
Бизнес логика это действия чтобы собрать и отдать этот объект. Неправильно в ней писать проверку прав пользователя.
Вот это я люблю. Одобренные местными админами! Как серьезно звучит. Как будто хоть один админ или даже целый отдел способен разобраться хотя бы в MS или Оракловых апдейтах. Не говоря уже обо всем остальном софте. Никто ни в чем естественно не разбирается. И даже не пытается разобраться. Хорошо если ставят достаточно быстро. Или не ставят и ловят шифровальщиков. В итоге дополнительный геморрой для админов на пустом месте.
Всем кому надо по работе, а это большая часть сотрудников уровнем выше дворника, приходят местные айтишники и все настраивают сами. И софт ставят и дырочку для передачи файлов делают. По негласному распоряжению руководства. Работать как-то надо.
Тогда ставится рядом второй ноутбук с обычным 4Г.
Не работает вся эта схема с митм. Поставить можно. Внедрить можно. А работать не будет. В лаборатории без проблем, на реальных сетях не работает.
Сеть без интернета без проблем работает. Сценарий точно такой же. Рядом стоит ноутбук с 4Г. Только добавляется куча гемороя с обновлением всего и вся. Или пишутся смешные документы что мол у нас интернета нет и вообще все защищено и обновлений нам не надо. Живут такие документы до первого шифровальщика.
Ну не флешки, так какая-нибудь хитрая почта или шара в сети через которую все что угодно переслать можно. Проблема с невозможностью пересылки решается примерно через неделю-две после внедрения вот этого вот всего. Рабочий процесс встает и все быстро решается. Неофициально естественно.
Правильно будет так: Корпоративная среда (в вашем понимании этих слов) несовместима с современным миром. Без мобильных устройств сейчас и жизнь и работа просто невозможны.
И естественно никто ничего не расшифровывает и сертификаты не подменяет. Есть какое-то количество неадекватных фирм, я подозреваю что госы сплошь, которые могут такой фигней заниматься. С ними лучше не связываться. Если пришлось по проекту с ними общаться, то это обычно бывает так: Есть супер защищенная с митм сеть. А есть рядом стоящие ноутбуки на которых все и работают. Они смотрят в Интернет через обычный 4Г. И если что-то нужно в супер защищенной сети просто через флешку копируют.
И с почтой все забавно.
— Куда вам написать? Вот на этот адрес с визитки?
— Это рабочий вы лучше на него не пишите, он работает плохо. И не пропускает ничего. Пишите сюда на мой личный. И дают обычный gmail.
А чего спорить? История уже доказала что оно просто начнет работать у всех с какого-то момента. Как HTTPS. Очень долго говорили: Ну зачем? Большинству сайтов нечего шифровать. Это медленно, долго и сложно. Прошло время и теперь сайтов без HTTPS просто не осталось.
А еще больше я люблю вообще морозные истории про «полноценная HTTPS инспекция» ее никто никогда не видел, но все пугают.
Про блок по IP я написал. Никто ничего у себя включать/выключать не будет. Те кто на такое способны поставят vpn, остальные будут ругаться. Владельцы заблокированных до кучи сайтов буду судиться.
Им надо понравиться не конкретным людям (весьма вероятно что приятным и разбирающимся в деле), а большинству населения страны/региона. Да, и вот тому алкоголику Васе тоже надо понравиться.
Не дай бог таких собеседований и тестовых заданий как у них.
Да и откуда эти околокриминальные элементы возьмут оптом людей способных осмысленно поговорить о разработке? Хотя бы на уровне умного третьекурсника. С хорошими документами, трудовыми итп. Не забываем что профит десятки тысяч с каждого человека. Чтобы был смысл нужны хотя бы сотни таких.
Случайному дворнику с улицы тестовое задание, которое может потянуть на неделю, не дадут. Он завалится на разговоре до тестового задания. А человеку со знаниями такое приключение даром не нужно.
Не хотите делать тестовое задание или считаете что оно неадекватно? Просто уходите и идете к следующему.
А проблема спама давно уже решена. Ящик на гугле и никакого спама.
Выборы. 3 партии. 45, 40 и 15 процентов. Не вглядываясь в циферки понять есть ли большинство у одной партии невозможно.
Те же выборы. 30 и 30 у двух партий. Остальные 40 у 5 мелкий партий. Понять могут ли эти 2 партии сформировать большинство не вглядываясь в циферки невозможно.
На круговых это все будет видно в первого взгляда. Циферки и подписи не критичны.
На круговой диаграмме должно быть не больше 3-4 разных значений и она должна показывать какие проценты от общих 100% эти значения занимают. Тогда все будет наглядно и полезно.