Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Дайте убедительный довод зачем может понадобиться определять свой базовый контроллер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2013, 18:13 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Вот тут рассказал: http://codearticles.ru/home/articleview/2296?comment=61 Реализация IDataService подхода в ASP.NET MVC4 Без базового контроллера нонче никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2013, 21:57 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Базовый контроллер с универсальной логикой CRUD еще имеет какой-то смысл. Но красивой реализации не получится. Делать из базового контроллера поставщика данных — отвратительное решение. Очень плохое. Ты даешь любому отнаследованному контроллеру сервис ко всем вообще данным. Нельзя. Плохо. Фу-фу-фу. У MVC есть есть встроенная подсистема разрешения зависимостей и существует целая куча контейнеров на любой вкус. Надо просто это изучить и начать пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 10:40 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
У тебя каша в голове, логике (тем более круд) не место в контроллере. Такая логика находится в датасервисе или репозитории. Почитай уже про паттерны, надоело на бред твой отвечать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 11:03 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Любой контроллер может юзать инстанс датасервиса, что тебе не нравится? Кроме плохо и фуфу арументы еще будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 11:06 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttДайте убедительный довод зачем может понадобиться определять свой базовый контроллер?Что-то я не понял всей глубины вопроса. Базовый контроллер инкапсулирует в себе логику, общую для какой-то части приложения. Если таких мест в приложении нет, то базовый контроллер не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 11:17 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
http://code.google.com/p/mvc-authorization-authentication/source/browse/trunk/+mvc-authorization-authentication/MVCAuthenticationSample/BaseController.cs Классическое применение базового контроллера, о котором я говорил тут . Правда, я бы не совсем так писал секурити, я б вынес это в отдельный класс, который прибыли к базовому контроллеру. Но не суть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 11:35 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
skyANA, Для начала давайте выясним какую задачу решает контроллер в классическом MVC. M — это бизнес-логика, куда входит модель и все операции над ними. C — это прослойка между M и V. V — это по сути тупейший шаблон вывода данных. В реальных веб-приложениях эта схема не может поддерживаться в идеальном виде, так на V может существовать еще одна прослойка клиентской MVC или MVVP (к примеру kendo или knockout). Поэтому никакую логику C не должен инкапсулировать. Хотя никто никому не может запретить откровенно говнокодить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 13:26 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, Не надо приводить унылое говнокодище из чужой репы. Тогда небыло глобальных фильтров. Нужна какая-то обработка для всех действий независимо от контроллера? У MVC для этого есть точки расширения, такие как глобальные фильтры например. Не отрицаю, что в большущем проекте какой-нибудь супер-CMS может понадобиться собственная реализация контроллера и то, если это не нарушает принципов единой ответственности и не повышает связность в архитектуре. Подача данных — ошибка проектирования однозначно. В ASP.NET MVC есть встроенная инфраструктура разрешения зависимостей. Не нужно её игнорировать, если лень разбираться, то тут уже ничего не поделаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 13:31 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt, У меня осталось на поддержке 2 проекта, где я по неопытности и незнанию делал один в один, как предлагает МСУ, т.е. базовый контроллер, передающий своим наследникам Service. Это ад. Залез в код через несколько месяцев и не имею представления о том, какой контроллер работает с какими данными, какие контроллеры меняют данные, а какие не могут. Ибо все контроллеры имеют доступ ко всем данным и могут делать с ними что угодно. Это плохо, плохо, и еще раз плохо. Это не гуд. Чугунной линейкой лупить по рукам за такую архитектуру. Последние мои проекты используют по возможности всю мощь MVC, в том числе DI и DepencyResolver, сказка. Пока не нашлось ни одной задачи, которая бы решалась лучше всего через базовый контроллер. Все покрыто тестами, на все 100%, при разработке не используется база данных, данные генерируются так как мне надо. Потом легко сборка с DataAccessLayer подменяется на EF. Никаких изменений в коде проекта не производится. Сказка. Нет нужды лезть и ковырять базовый контроллер, чтобы сменить полностью всю бизнес-логику. При чем менять можно не только базу данных, но и вообще весь слой доступа к данным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 13:39 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostthVostt, У меня осталось на поддержке 2 проекта, где я по неопытности и незнанию делал один в один, как предлагает МСУ, т.е. базовый контроллер, передающий своим наследникам Service. Это ад. Залез в код через несколько месяцев и не имею представления о том, какой контроллер работает с какими данными, какие контроллеры меняют данные, а какие не могут. Ибо все контроллеры имеют доступ ко всем данным и могут делать с ними что угодно. Это плохо, плохо, и еще раз плохо. Это не гуд. Чугунной линейкой лупить по рукам за такую архитектуру. Последние мои проекты используют по возможности всю мощь MVC, в том числе DI и DepencyResolver, сказка. Пока не нашлось ни одной задачи, которая бы решалась лучше всего через базовый контроллер. Все покрыто тестами, на все 100%, при разработке не используется база данных, данные генерируются так как мне надо. Потом легко сборка с DataAccessLayer подменяется на EF. Никаких изменений в коде проекта не производится. Сказка. Нет нужды лезть и ковырять базовый контроллер, чтобы сменить полностью всю бизнес-логику. При чем менять можно не только базу данных, но и вообще весь слой доступа к данным. Один говносервис на весь проект - киськин бред, который даже обсуждать нечего. Совсем другая история - обобщенный контроллер. Если правильно его готовить, то во многих случаях нужны только views&models, минимум кода и возможность быстро вносить изменения без перелопачивания всего проекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 15:04 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
SeVa, О, я бы очень хотел посмотреть на такую реализацию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 15:13 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
На правах оффтопа: Во как людям бошку забили. Как вариант, можно собирать бутылки, или торговать шавермой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 15:35 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, Для начала давайте выясним какую задачу решает контроллер в классическом MVC. M — это бизнес-логика, куда входит модель и все операции над ними. C — это прослойка между M и V. V — это по сути тупейший шаблон вывода данных. В реальных веб-приложениях эта схема не может поддерживаться в идеальном виде, так на V может существовать еще одна прослойка клиентской MVC или MVVP (к примеру kendo или knockout). Поэтому никакую логику C не должен инкапсулировать. Хотя никто никому не может запретить откровенно говнокодить.Давайте лучше выясним какую задачу решаете ВЫ. К примеру рассмотрим CMS. В бекенде пользователь конструирует страницу, добавляет различные компоненты (модули): меню, форму логина, просто блок контента и т.п. Каждый компонент имеет своё представление (View), модель данных (Model) и соответсвенно контроллер (Controller). Вот последний и является наследником некоего ModelControllerBase к примеру с единственным действием (Action) Index(), что тупо отдаёт данные в представление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 16:00 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Тьфу, опечатался: skyANAModelControllerBase ModuleControllerBase И как пишет SeVa, если правильно его готовить, то при создание каких-то новых компонентов можно будет ограничится views&models. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 16:08 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
ShSerge, как вариант, вообще можно не копать. вы бы лучше по теме что-нибудь сказали, а не глубокомысленно оффтопили с умным видом )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 18:44 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
skyANA, речь сейчас не идёт о какой-то конкретной задаче. в примере с компонентом/виджетом CMS есть смысл. кроме того, должна быть фабрика контроллеров для виджетов, знающая о базовом контроллере, о том как его конструировать и что ему нужно. в этом случае базовый виджет-контроллер может быть абстрактным, и тогда мы заюзаем мощь ООП. а не то, что некоторые гордо именуют «ООП»: подсовывание общих методов и свойств в базу, что является грубо говоря частным случаем глобальных свойств и функций в рамках «неймспейса» контроллера, улавливаете всю бредовость этой затеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 18:48 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttM — это бизнес-логика, куда входит модель и все операции над ними. C — это прослойка между M и V. V — это по сути тупейший шаблон вывода данных. Тогда непонятно, как же ты предлагал вести логику CRUD в контроллере. Ты перечишь сам себе hVosttПоэтому никакую логику C не должен инкапсулировать. Хотя никто никому не может запретить откровенно говнокодить. См. выше. hVosttМСУ, Не надо приводить унылое говнокодище из чужой репы. Почему ты считаешь, что это "унылое говнокодище из чужой репы", а то, что говоришь ты - не "унылое говнокодище из чужой репы"? hVosttТогда небыло глобальных фильтров. Нужна какая-то обработка для всех действий независимо от контроллера? У MVC для этого есть точки расширения, такие как глобальные фильтры например. Никак не возьму в толк, как коррелирует GlobalFilter и банальное наследование. Во-вторых, "тогда" - это когда? GlobalFilterCollection существуют аж с 3 версии MVC. hVosttНе отрицаю, что в большущем проекте какой-нибудь супер-CMS может понадобиться собственная реализация контроллера и то, если это не нарушает принципов единой ответственности и не повышает связность в архитектуре. Если не отрицаешь, то в чем, собственно, вопрос? hVosttПодача данных — ошибка проектирования однозначно. Как может наследование и инкапсуляция быть ошибкой проектирования? hVosttВ ASP.NET MVC есть встроенная инфраструктура разрешения зависимостей. Не нужно её игнорировать, если лень разбираться, то тут уже ничего не поделаешь. Раскрой тему подробнее, о чем именно речь. hVosttУ меня осталось на поддержке 2 проекта, где я по неопытности и незнанию делал один в один, как предлагает МСУ, т.е. базовый контроллер, передающий своим наследникам Service. Это ад. Залез в код через несколько месяцев и не имею представления о том, какой контроллер работает с какими данными, какие контроллеры меняют данные, а какие не могут. Ты уже достаточно "по опытности" нам показал, как работать с обработкой исключений. Во-вторых, что значит "не имею представления о том, какой контроллер работает с какими данными"? Если ты дурак и не разбираешься в C#, то не имеешь. Как можно читать код контроллера и не понимать, с какими данными он работает? Бред сивой кобылы. hVosttИбо все контроллеры имеют доступ ко всем данным и могут делать с ними что угодно. Это плохо, плохо, и еще раз плохо. Это не гуд. Чугунной линейкой лупить по рукам за такую архитектуру. Контроллеры, отнаследованные от базового, не "имеют доступ ко всем данным", а имеют доступ к общему датасервису (датасервисам). Почувствуй разницу. Во-вторых, с какими данными и как работать - не задача контроллера, а задача отдельного секьюрити класса, который доступен во всех контроллера. В-третьих, о архитектуре тебе еще рано судить, не дорос. hVosttПоследние мои проекты используют по возможности всю мощь MVC, в том числе DI и DepencyResolver, сказка. Пока не нашлось ни одной задачи, которая бы решалась лучше всего через базовый контроллер. Все покрыто тестами, на все 100%, при разработке не используется база данных, данные генерируются так как мне надо. Ситуация с базовым контроллером не запрещает использовать зависимости, твой фанатизм мне непонятен. hVosttПотом легко сборка с DataAccessLayer подменяется на EF. Вот тут рассмешил, ты еще не научился с EF работать, какой еще тут DataAccessLayer :) Во-вторых, сборка легко подменится и с ситуацией датасервиса, который интерфейсом доступен для всех контроллеров. В чем профит? hVosttНикаких изменений в коде проекта не производится. Сказка. Нет нужды лезть и ковырять базовый контроллер, чтобы сменить полностью всю бизнес-логику. При чем менять можно не только базу данных, но и вообще весь слой доступа к данным. Какая разница, куда лезть, в базовый контроллер или в класс, управляющий жизнью инстанса? hVosttskyANA, речь сейчас не идёт о какой-то конкретной задаче. Тебя пытаются вывести из сумрака и подогнать конкретную ситуацию. Речь именно о конкретной задаче. hVosttв примере с компонентом/виджетом CMS есть смысл. А нахрена ты тут морг всем насилуешь и срешь в моих камментах? (сцуко, забаню нахрен) hVosttкроме того, должна быть фабрика контроллеров для виджетов, знающая о базовом контроллере Ты бредишь. Сначала ты вещаешь о том, что базовый контроллер зло. Потом ты просвещаешь о том, что должна быть фабрика для работы с базовым контроллером. По-моему ты перегрелся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 19:36 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt, и ты задрал уже флудить в камментах! Если по сути рецепта нечего по сути сказать - проходи лесом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 19:41 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, речь сейчас не идёт о какой-то конкретной задаче. в примере с компонентом/виджетом CMS есть смысл. кроме того, должна быть фабрика контроллеров для виджетов, знающая о базовом контроллере, о том как его конструировать и что ему нужно. в этом случае базовый виджет-контроллер может быть абстрактным, и тогда мы заюзаем мощь ООП. а не то, что некоторые гордо именуют «ООП»: подсовывание общих методов и свойств в базу, что является грубо говоря частным случаем глобальных свойств и функций в рамках «неймспейса» контроллера, улавливаете всю бредовость этой затеи?Нет. Совершенно не понимаю о чём Вы собственно пытаетесь рассуждать и какой тайный смысл найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2013, 20:40 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, 1. ссылку на говнокод который ты мне скинул датируется 2009 годом . а ASP.NET MVC 3 RTM has been released January 13, 2011 . так что про глобальные фильтры совсем не в кассу. в стабильные привычки, смотрю, у тя входит скинуть ссыль на первую попавшуюся выдачу из Google, не разобравшись даже с тем, что скидываешь. 2. к вопросу «Как может наследование и инкапсуляция быть ошибкой проектирования?» , отвечаю: какая нахрен инкапсуляция??? ребенок, ты чо несешь? иди открой справочник на слове «инкапсуляция» и прочитай что это хоть значит. я уже не понимаю, ты вообще программированием как занимаешься? просто выучил ряд терминов, а что они значат знать совсем не обязательно? ну и ну... поясню для маленьких деток. твой датасервис, который размещается в базовом классе с таким же успехом может быть доступен 1) из MvcApplication, 2) из собственного синглетона, 3) из ServiceLocator-а 4) и т.д., а проброс доступа к данным (как ты там его называешь, Service?) из базы в наследника к инкапсуляции не имеет никакого отношения. 3. к комменту «Раскрой тему подробнее, о чем именно речь.» берем первую попавшуюся книгу про ООП и постигаем что такое ООП, для чего он нужен, где применяется. потом открываем книгу про паттерны программирования и читаем, читаем, читаем.... потом уже изучаем ASP.NET MVC и узнаем, что (ничего себе!) он из коробки поддерживает аспектно-ориентированное программирование, да еще реализует ServiceLocator (предоставляя интерфейс IDepencyResolver), а с одним из популярных контейнеров еще и получаем DI. учим зачем и почему этот оверхед в коде нужен, что это даёт и к чему может привести сильная связность компонентов приложения. 4. «Как можно читать код контроллера и не понимать, с какими данными он работает?» просто включи мозг. как ребенок, ей богу. ясен пень, что прочитав код контроллера, станет понятно с чем он работает. но будет на много лучше, если это же самое будет понятно всего лишь глядя на его конструктор. 5. «Контроллеры, отнаследованные от базового, не "имеют доступ ко всем данным", а имеют доступ к общему датасервису (датасервисам). Почувствуй разницу.» поясни разницу, которую я должен почувствовать. что ты там называешь датасервисом, или чем-то еще, совершенно неважно. главное доступ через Это к данным ко всем есть. и ограничить его никак нельзя, так как базовый класс на всех один. или переформулируй что ты имеешь в виду, не взрывай мозг. 6. «Какая разница, куда лезть, в базовый контроллер или в класс, управляющий жизнью инстанса?» приехали. занавес. значит, между доступом «ко всем данным» и «к общему датасервису» какая-то фантастически-космическая разница есть, а тут разницы нет. мдаааааааааааа... П.С. понятно теперь откуда в этих так называемых рецептах такой силищи бредятина. но если ресурс делался исключительно «для себя» тогда ок, извиняюсь, больше не трону твой ресурс. просто надо предупреждать на главной странице, что в комментах разрешено только хвалить автора за его блестящий ум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 00:53 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
skyANA, так если не понимаете, зачем тогда что-то писать? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 00:54 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, так если не понимаетеВроде я чётко написал, чего не понимаю. Ваших рассуждений. Вот объясните мне фразу: "подсовывание общих методов и свойств в базу". И зачем Вы мне её в ответ на мой пост написали? Разве я предлагал подсовывать какие-то общие методы и свойства в базу?hVosttзачем тогда что-то писать?Я предложил рассмотреть вопрос на конкретном примере, вместо того, чтобы искать тайный смысл в сферическом вакууме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 02:28 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt, Лихо, я бы сказал смело. Оказывается сонтроллер не рекомендуется наследовать, вот ребята то не знали (Адам Фримен,дино эспозито), кои в своих примерах применяют эту анафему. Надо пойти дальше, и посоветовать в будущем запечатать его, а кто и попытается наследовать - пускай дрочит IController таких перцев как бы совсем не много должно быть. зы Не видел что там МСУ сотворил с контроллером, но смею предположить он там оптимизировал доступ к объектам. Это как видим порочная практика перенаследования базового класса для быстро и удобного доступа к чему то, равно как и рефакторинг для определенной области кода с использованием чего то общего. Надо смелее применять сингтоны, особенно для веб.... и точки расширения. зы еще бы понять что это такое - "если это же самое будет понятно всего лишь глядя на его конструктор" Но времени и ума пока на это нет, вот уже утро, а я все переписываю все проекты, в свете этого топика... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 03:39 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt1. ссылку на говнокод который ты мне скинул датируется 2009 годом . а ASP.NET MVC 3 RTM has been released January 13, 2011 . так что про глобальные фильтры совсем не в кассу. в стабильные привычки, смотрю, у тя входит скинуть ссыль на первую попавшуюся выдачу из Google, не разобравшись даже с тем, что скидываешь. В примере приводится демонстрация функционала, доступная в базовом контроллере, а именно секурность - HasUserAccessToModule, о которой я говорил тут 14144190 . Расскажи нам, как собираешься подобное реализовывать в глобальном фильтре? Побежал за попкорном. hVostt2. к вопросу «Как может наследование и инкапсуляция быть ошибкой проектирования?» , отвечаю: какая нахрен инкапсуляция??? ребенок, ты чо несешь? иди открой справочник на слове «инкапсуляция» и прочитай что это хоть значит. я уже не понимаю, ты вообще программированием как занимаешься? просто выучил ряд терминов, а что они значат знать совсем не обязательно? ну и ну... Тем неучам, кто не обрабатывает исключения в приложении и говорит, что у него никогда не падает код - не понять. Разжевываю для тех, кто в танке. Вот тут 14144190 я писал: ...МСУКлассическое применение базового контроллера, о котором я говорил тут. Правда, я бы не совсем так писал секурити, я б вынес это в отдельный класс, который прибыли к базовому контроллеру. Но не суть. То есть - секьюрити инкапсулировано в отдельном классе, отруливающим что можно делать пользователю. Сам класс прокидывается в базовом контроллере и доступен всем наследникам. Шагом марш в школу, недоросль. hVosttпоясню для маленьких деток. твой датасервис, который размещается в базовом классе с таким же успехом может быть доступен 1) из MvcApplication, 2) из собственного синглетона, 3) из ServiceLocator-а 4) и т.д., а проброс доступа к данным (как ты там его называешь, Service?) из базы в наследника к инкапсуляции не имеет никакого отношения. Ты даже уже не помнишь, о чем шла речь - не мудрено. Сначала иди почитай, что такое EF и логирование в приложении, а потом мы поговорим за инкапсуляцию. Речь шла о секурити классе, бестолочь (наследование + инкапсуляция). hVostt3. к комменту «Раскрой тему подробнее, о чем именно речь.» берем первую попавшуюся книгу про ООП и постигаем что такое ООП, для чего он нужен, где применяется. потом открываем книгу про паттерны программирования и читаем, читаем, читаем.... потом уже изучаем ASP.NET MVC и узнаем, что (ничего себе!) он из коробки поддерживает аспектно-ориентированное программирование, да еще реализует ServiceLocator (предоставляя интерфейс IDepencyResolver), а с одним из популярных контейнеров еще и получаем DI. учим зачем и почему этот оверхед в коде нужен, что это даёт и к чему может привести сильная связность компонентов приложения. А теперь подумай своим унылым мозгом, причем тут наследование? Или ты хочешь сказать, что с появлением IDependencyResolver в MVC отпала надобность в наследовании? Бред сивой кобылы, которая ничего не понимает в IoC и ООП - в кучу смешалось всё, люди, кони... hVostt4. просто включи мозг. как ребенок, ей богу. ясен пень, что прочитав код контроллера, станет понятно с чем он работает. но будет на много лучше, если это же самое будет понятно всего лишь глядя на его конструктор. Ты как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки? hVostt5. поясни разницу, которую я должен почувствовать. что ты там называешь датасервисом, или чем-то еще, совершенно неважно. главное доступ через Это к данным ко всем есть. и ограничить его никак нельзя, так как базовый класс на всех один. или переформулируй что ты имеешь в виду, не взрывай мозг. Не понимаю твоей логики, ты не понимаешь разницу между базовым классом и наследником, но берешься что-то опровергать. Может таки в сад? hVostt6. приехали. занавес. значит, между доступом «ко всем данным» и «к общему датасервису» какая-то фантастически-космическая разница есть, а тут разницы нет. мдаааааааааааа... Ничего не понял, опять какой-то поток феерической фантазии. У тебя сложности с построением предложений? Еще раз и по порядку. hVosttП.С. понятно теперь откуда в этих так называемых рецептах такой силищи бредятина. У тебя нет мозгов, чтобы понять эту бредятину. hVosttно если ресурс делался исключительно «для себя» тогда ок, извиняюсь, больше не трону твой ресурс. просто надо предупреждать на главной странице, что в комментах разрешено только хвалить автора за его блестящий ум. Вот это ты зачем ляпнул? Во-первых, глупость. Во-вторых, интересно - возьми и проверь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 09:56 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
авторДайте убедительный довод зачем может понадобиться определять свой базовый контроллер? Passing data to the master page ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 10:12 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, вопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении, при развитии фреймворка (в будущих версиях MVC 5,6,...), в комплексном тестировании и в командной работе. т.е. в общем и целом. я понимаю, что конкретной задаче конкретное решение, но мы говорим про фреймворк в целом, а фреймворк — это уже само по себе общее решение для огромной группы задач. вот о нем речь и идет. кто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов «давай задачу» в этом топике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 10:47 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttвопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении Не может. Был не просто поднят вопрос (иначе тебе просто ответили бы), а были высказаны тобой бредни про сферического коня в вакууме с метанием слюны про DI и прочий шелест листьев об ООП. Почувствуй разницу между "вопрос был поднят, вопрос". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 10:51 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, Вот те на, пожалуйста, ребенок: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 1. Не засираем код базового контроллера. 2. Не заставляем никого наследоваться от базового контроллера и следить за этим. 3. Можем вешать данное поведение только на конкретные, нужные нам, контроллеры или даже на действия. 4. Если надо вообще на все контроллеры/действия, регистрируем фильтр глобально. 5. Если надо подменить срочно на другую реализацию, изменяем одну строчку в регистрации фильтров, а ты иди перелопачивай свой базовый контроллер, и успехов тебе в этом! Если такая элементарщина вызывает у тебя проблему, я вообще не понимаю смысл нашей полемики. Иди учи матчасть, дитё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:07 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Более того! В регистрации глобальных фильтров можно регистрировать интерфейс и резолвить нужную реализацию. Тогда мы сможем подменять вообще любую реализацию по заданным условиям где и как угодно. Допустим на локал-хосте одна, на продакшене другая, для тестов третья. И я погляжу как ты будешь подменять реализацию базового контроллера. Читай книжечки всяких Фрименов и Экспозито, МСУ, практикуйся, учись. Верю, у тебя все получится. Когда-нибудь до тебя допрет, что говнокод к хорошему не приводит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:11 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУТем неучам, кто не обрабатывает исключения в приложении и говорит, что у него никогда не падает код - не понять. до тебя шутки юмора так же доходят, как практические знания. наверное даже книжки читать тебе бессмысленно. МСУТо есть - секьюрити инкапсулировано в отдельном классе, отруливающим что можно делать пользователю. Сам класс прокидывается в базовом контроллере и доступен всем наследникам. ответил выше. все это из коробки и легко решается фильтром, и неча засирать базу таким бредом. привел бы хоть один убедительный аргумент, что решается лучше всего только через базу. но не можешь же. одну лажу гонишь. МСУА теперь подумай своим унылым мозгом, причем тут наследование? Или ты хочешь сказать, что с появлением IDependencyResolver в MVC отпала надобность в наследовании? предпочти слабую связность наследованию. агрегацию, резолвинг, аспекты. это все лучше наследования, практически всегда. если только ты не разрабатываешь фреймворк. тогда я спорить не буду. а покажешь своё детище еще и спасибо скажу. МСУТы как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки? а нахрена? с самого начала я задал этот вопрос. нахрена козе баян? МСУВот это ты зачем ляпнул? Во-первых, глупость. Во-вторых, интересно - возьми и проверь. это был вопрос, который по-любому напрашивается. я-то проверю когда мне понадобится, но ты ж рецепт выкинул. я попросил уточнения, а ты его оказывается не знаешь. знал бы просто запостил генерируемый SQL, было бы больше пользы. но ты будешь носом воротить «тебе надо, ты и проверяй». я уже понял что ресурс ты сделал для себя исключительно, а комменты только для приёма «спасибо», только вижу не больно-то они используются по назначению... в общем, не можешь вести ресурс, не берись. не пиарь его на каждом шагу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:25 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
[quot hVostt]МСУ, Вот те на, пожалуйста, ребенок: гавнокод Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. Садись, неуч, двойка. За реализацию секьюрити - уволить без выплаты материального пособия. Смотри и учись - логика сеьюрити должна быть запечана в отдельном классе, а не фильтре, контроллере и т.п.: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Базовый контроллер - лишь удобный проводник для логики безопасности: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Всё. Теперь мы можем удобно отруливать свойством Security во всех контроллерах и представлениях (через ViewContext.Controller) без каких-либо телодвижений с моделями представлений. hVosttЕсли такая элементарщина вызывает у тебя проблему, я вообще не понимаю смысл нашей полемики. Иди учи матчасть, дитё. Если это для тебя такая же элементарщина, как обработка исключений в приложении и логирование - я плакал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:34 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttБолее того! В регистрации глобальных фильтров можно регистрировать интерфейс и резолвить нужную реализацию. Тогда мы сможем подменять вообще любую реализацию по заданным условиям где и как угодно. Допустим на локал-хосте одна, на продакшене другая, для тестов третья. И я погляжу как ты будешь подменять реализацию базового контроллера. Читай книжечки всяких Фрименов и Экспозито, МСУ, практикуйся, учись. Верю, у тебя все получится. Когда-нибудь до тебя допрет, что говнокод к хорошему не приводит. Дурилко картонное, как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав? Тебе не то, что Экспозито, тебе программировать противопоказано, теоретик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:35 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУСадись, неуч, двойка. За реализацию секьюрити - уволить без выплаты материального пособия. ты вообще в адеквате? вот твой коммент: МСУВ примере приводится демонстрация функционала, доступная в базовом контроллере, а именно секурность - HasUserAccessToModule, о которой я говорил тут 14144190 . Расскажи нам, как собираешься подобное реализовывать в глобальном фильтре? Побежал за попкорном. ты привел пример, я его перебросил на фильтры. без изменений в логике. и работать он будет ничуть не хуже, чем в базовом классе. плюсов от того, что это теперь фильтр на много больше. минусов ни одного нет. и это всё тот же код. абсолютно. только в фильтрах. т.е. ты назвал говнокодом, пример который сам же и привёл. ты как собака, которая кусает себя за хвост ))))))) мдааааааааааааааааа..................... умора ей богу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:39 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, я не собираюсь здесь обсуждать реализацию секьюрити, не съезжай с темы. хочешь обсудить как правильно готовить секьюрити, создавай отдельную тему, обсудим. не уходи от основного вопроса. давай мне убойный пример, такой где собственный базовый контроллер будет действительно иметь смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:42 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttдо тебя шутки юмора так же доходят, как практические знания. наверное даже книжки читать тебе бессмысленно. Не обработка исключений - это нынче такие шутки у тебя? Шутник, однако. hVosttответил выше. все это из коробки и легко решается фильтром, и неча засирать базу таким бредом. привел бы хоть один убедительный аргумент, что решается лучше всего только через базу. но не можешь же. одну лажу гонишь. С фильтром ты можешь сходить в ясли и детей посмешить. Я тебе ответил почему - лажа у тебя в голове от непонимания. hVosttпредпочти слабую связность наследованию. агрегацию, резолвинг, аспекты. это все лучше наследования, практически всегда. если только ты не разрабатываешь фреймворк. тогда я спорить не буду. а покажешь своё детище еще и спасибо скажу. Для каждой задачи - своя отвертка. Ты же пытаешь подо всё подогнать молоток. Это лишь говорит об отсутствии реального опыта - просто унылая кодирующая обезьянка, которая смотрит как дяди пишут. Тебе дали реальную задачу - ты начал что-то булькать невнятное. Потом ты начал плести бред, что да, базовый контроллер нужен. Теперь ты несешь бред про DI. Ты определись, чудо, больно смешно смотреть на твои рыпанья. hVosttМСУТы как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки? а нахрена? с самого начала я задал этот вопрос. нахрена козе баян? Я тебе ответил - для того, чтобы протащить базовый функционал в наследники. У тебя непонимание, для чего нужно наследование в ООП, или что? hVosttэто был вопрос, который по-любому напрашивается. Не знаю. У адекватного человека он не напрашивается - берешь и смотришь выхлоп. Ты же это сделал с такой издевкой, мол что за гавно там может сгенериться. И опять облажался, ибо там всё нормально транслируется. hVosttя-то проверю когда мне понадобится, но ты ж рецепт выкинул. Еще раз, ты не просто спросил, а вбросил очередной флуд в виде намека, что сгенерится гавно. Ты дурак что-ли, вообще не понимаешь о чем речь? hVosttя попросил уточнения, а ты его оказывается не знаешь. См. выше, это не просьба уточнить, это флудерастия, которую удалять нахрен. hVosttзнал бы просто запостил генерируемый SQL, было бы больше пользы. Зачем? Там обычный линейных выхлоп для and и or. hVosttно ты будешь носом воротить «тебе надо, ты и проверяй». я уже понял что ресурс ты сделал для себя исключительно, а комменты только для приёма «спасибо», только вижу не больно-то они используются по назначению... в общем, не можешь вести ресурс, не берись. не пиарь его на каждом шагу. 1. Ресурс изначально был для меня, я об этом писал. 2. Не видишь назначения - это твои проблемы. Мне зачем твои изливания? 3. Я уж сам как-то определюсь, какой мне ресурс вести, а какой не вести, ок? 4. Я его не пиарю и тем более на каждом шагу, я даю пруф ссылки по теме. Еще вопросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:47 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, я не собираюсь здесь обсуждать реализацию секьюрити, не съезжай с темы. хочешь обсудить как правильно готовить секьюрити, создавай отдельную тему, обсудим. не уходи от основного вопроса. давай мне убойный пример, такой где собственный базовый контроллер будет действительно иметь смысл. По-моему, съезжаешь ты. Третий раз спрашиваю, не уходи от темы: МСУкак мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав? По-моему простой вопрос - ответ будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:48 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, вот те родной кейс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. скажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:49 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttты привел пример, я его перебросил на фильтры. Я тебе задал вопрос про отруливание секьюрити в UI, как будешь это делать с помощью фильтра? Нужно админу один функционал показать, менеджеру - другой, вьюверу - третий. hVosttбез изменений в логике. и работать он будет ничуть не хуже, чем в базовом классе. плюсов от того, что это теперь фильтр на много больше. минусов ни одного нет. и это всё тот же код. абсолютно. только в фильтрах. т.е. ты назвал говнокодом, пример который сам же и привёл. ты как собака, которая кусает себя за хвост ))))))) мдааааааааааааааааа..................... умора ей богу. Ты либо дурак, либо идиот. Выбирай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:50 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttскажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере?? Я тебя 4-ый раз спрашиваю: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:51 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttскажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере?? Я тебя 4-ый раз спрашиваю: МСУкак мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав? Где ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:51 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУДля каждой задачи - своя отвертка. Ты же пытаешь подо всё подогнать молоток. Это лишь говорит об отсутствии реального опыта - просто унылая кодирующая обезьянка, которая смотрит как дяди пишут. Тебе дали реальную задачу - ты начал что-то булькать невнятное. Потом ты начал плести бред, что да, базовый контроллер нужен. Теперь ты несешь бред про DI. Ты определись, чудо, больно смешно смотреть на твои рыпанья. ну всё, если прозвучало слово «обезьянка», значит разумные аргументы кончились ))))) ты в своём репертуаре, респект! МСУЯ тебе ответил - для того, чтобы протащить базовый функционал в наследники. У тебя непонимание, для чего нужно наследование в ООП, или что? вот и спрашивается, зачем его туда тащить? тебе возможностей расширения из коробки мало? МСУЕще раз, ты не просто спросил, а вбросил очередной флуд в виде намека, что сгенерится гавно. Ты дурак что-ли, вообще не понимаешь о чем речь? так ты покажешь SQL? или ты настолько уверен в своих словах, что проверять ничего не нужно? МСУЕще вопросы? задето твое раздутое ЧСВ, я уже понял. остальное уже не имеет никакого значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 11:57 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttну всё, если прозвучало слово «обезьянка», значит разумные аргументы кончились ))))) ты в своём репертуаре, респект! Ты аргументы пропускаешь мимо ушей и не отвечаешь на прямые вопросы. Так что давай не будем про репертуар. hVosttвот и спрашивается, зачем его туда тащить? тебе возможностей расширения из коробки мало? Это абсолютно разные задачи и решаются по-разному. Наследование - никаким образом не коррелирует с задачами DI, двоешник. hVosttтак ты покажешь SQL? или ты настолько уверен в своих словах, что проверять ничего не нужно? Я уверен в своих словах на 100%. Тебя устраивает такой ответ? hVosttзадето твое раздутое ЧСВ, я уже понял. остальное уже не имеет никакого значения. Имеет - ответь на вопрос про отруливание UI в разрезе пользовательских полномочий. 5-ый раз прошу ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:00 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, если надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики. если надо ограничить доступ к действиям, например, по ролям, есть вот такая штука [Authorize(Roles = "admin,manager")] — или пишешь свой фильтр, можешь на базе стандартного или полностью свой. еще вопросы?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:01 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, если надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики. если надо ограничить доступ к действиям, например, по ролям, есть вот такая штука [Authorize(Roles = "admin,manager")] — или пишешь свой фильтр, можешь на базе стандартного или полностью свой. еще вопросы?? Какой в зад Authorize?! Ты точно инопланетянен... Для тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:05 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, тебе никто не мешает иметь свой синглетон типа WebSecurity, доступный во всем приложении. нет смысла его тащить в контроллер. но если так уж хочется «сахара», создай Extensions для контроллера. я не понимаю, почему мы скатились до обсуждения откуда стучаться к своему Security, ты можешь его засунуть в базу, никто тебе не мешает. но необходимости в этом нет никакой абсолютно. кроме того, всем ли контроллерам нужен этот Security? чем вот такой вариант плох: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:08 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttесли надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики 1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза? 2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред? У тебя сложности с понимаем этого вопроса? "как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:08 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУДля тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize? какая хреновая архитектура, если у тебя есть такие методы. уже много лет это делается через роли. не HasUserProductEdit, а ProductEditor к примеру. и доступ к ролям юзера есть и в контроллере и во вьюхах. проверяй — нехочу. User.IsInRole() тебе в помощь юный падаван. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:11 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, тебе никто не мешает иметь свой синглетон типа WebSecurity, доступный во всем приложении. Аааа...! А как же фильтр? А как же DI? hVosttнет смысла его тащить в контроллер. но если так уж хочется «сахара», создай Extensions для контроллера. я не понимаю, почему мы скатились до обсуждения откуда стучаться к своему Security, ты можешь его засунуть в базу, никто тебе не мешает. но необходимости в этом нет никакой абсолютно. 1. За синглтон - сразу тебя уволить нахрен. 2. За отдельный Extensions для контроллера: вот скажи мне, ты реально дурак или прикидываешься? Security глобален для всего приложения и даже нескольких приложений, причем тут "Extensions для контроллера"? Ты не понимаешь, что несешь бред сивой кобылы? hVosttкроме того, всем ли контроллерам нужен этот Security? чем вот такой вариант плох: Всем. И не только контроллерам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:12 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУ1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза? 2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред? У тебя сложности с понимаем этого вопроса? "как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?" я вижу ты первый в мире кто открыл, что оказывается можно строить UI в разрезе пользовательских прав. для этого в ASP.NET все есть. еще раз, User.IsInRole() тебе в помощь. а что за этим стоит, твоя реализация или стандартная, уже by design. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:13 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, МСУДля тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize? какая хреновая архитектура, если у тебя есть такие методы. уже много лет это делается через роли. не HasUserProductEdit, а ProductEditor к примеру. и доступ к ролям юзера есть и в контроллере и во вьюхах. проверяй — нехочу. User.IsInRole() тебе в помощь юный падаван. Невооруженным глазом видно, что у тебя просто нет опыта работы с подобными приложениями. Далеко не всё в роли упирается. Например: HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). Проблемы с архитектурой у тебя в голове, а не у меня в коде. Сначала дорасти до реальных задач, а потом говори за архитектуру других. С User.IsInRole можешь сходить в сад, где тебе и место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:15 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, МСУ1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза? 2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред? У тебя сложности с понимаем этого вопроса? "как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?" я вижу ты первый в мире кто открыл, что оказывается можно строить UI в разрезе пользовательских прав. для этого в ASP.NET все есть. еще раз, User.IsInRole() тебе в помощь. а что за этим стоит, твоя реализация или стандартная, уже by design. Садись, двойка. С User.IsInRole ты можешь детей повеселить, бездарь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:16 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, я пока не вижу, преимуществ базового контроллера за исключением «сахара». создавать , провайдить и хранить объект секьюрити можно где угодно. база контроллера не лучшее место. но весьма удобное для неопытных программеров. которые не понимают смысла в слабой связности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:16 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, я пока не вижу, преимуществ базового контроллера за исключением «сахара». создавать , провайдить и хранить объект секьюрити можно где угодно. база контроллера не лучшее место. но весьма удобное для неопытных программеров. которые не понимают смысла в слабой связности. Сначала ты говорил, что нужен DI. Потом после того, как тебя хорошенько отшлепали, ты начал предлагать еще более безумные варианты - синглтон или экстеншен для контроллера. Потом ты с треском провалился по безопасности, абсолютно не разобравшись в предметной области построения секурити классов. И теперь на тебе - ты видишь в этом сахар. Убей себя об стену, бестлочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:19 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУHasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). это все говорит о явно отвратительном дизайне приложения. надо как можно сильней все усложнить и запутать, чтобы потом для окружающих казаться умным, так чтоли? ЧСВ, смотрю, не даёт покоя. надо постоянно его подтверждать. например, черезвычайно усложненной архитекторой. и еще, пиши в Майкрософ, пусть увольняют своих разрабов нахрен, за User.IsInRole() . ничего они в программировании не понимают. лучше пусть тебя пригласят главным архитектором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:20 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУHasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). это все говорит о явно отвратительном дизайне приложения. надо как можно сильней все усложнить и запутать, чтобы потом для окружающих казаться умным, так чтоли? Это банальная безопасность, чайник :) Но для тех, кто всю жизнь клепает сайты визитки и не обрабатывает исключения - да, это плохой дизайн и глупые бизнес-требования. hVosttЧСВ, смотрю, не даёт покоя. надо постоянно его подтверждать. например, черезвычайно усложненной архитекторой. Ты просто еще не дорос до архитектуры, твое дело слушать дядей, которые определяют, где кнопку разместить в UI. hVosttи еще, пиши в Майкрософ, пусть увольняют своих разрабов нахрен, за User.IsInRole() . ничего они в программировании не понимают. лучше пусть тебя пригласят главным архитектором. Ты до сих пор так ничего и не понял, мальчик. User.IsInRole - это всего-лишь частный случай. Безопасность (CanView, CanEdit, CanDelete, Can..., Can..., ...) намного сложнее и замороченнее, чем User.IsInRole. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:23 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУСначала ты говорил, что нужен DI. Потом после того, как тебя хорошенько отшлепали, ты начал предлагать еще более безумные варианты - синглтон или экстеншен для контроллера. Потом ты с треском провалился по безопасности, абсолютно не разобравшись в предметной области построения секурити классов. И теперь на тебе - ты видишь в этом сахар. вкупе к раздутому ЧСВ, еще и развитое воображение. чего несешь? вопрос изначально состоит в том, где может понадобиться базовый контроллер. убедительного примера от тебя так и не последовало. единственный код, который ты мне скинул легко переписался на фильтрах. остальное все бла-бла-бла, переиначивание, обезьянки, какие-то шлепания, попытка съехать на реализацию секьюрити, которая сам же и сказал, к контроллеру не привязана, а нужна во всем приложении. если так, то какого черта??? при чем тогда тут базовый контроллер? что за шиза? ответь по существу, если есть что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:24 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУ Безопасность (CanView, CanEdit, CanDelete, Can..., Can..., ...) намного сложнее и замороченнее, чем User.IsInRole. не забудем добавить: «.. у МСУ», ибо этот товарищь обажает все усложнять, так он выглядит гораздо статней, умнее. и нужнее к слову говоря, ибо никто кроме него в коде не разберется. к любой программе, вышедшей из под рук МСУ требуется обязательное приложение: МСУ. видел я таких. и уволить нельзя, и оставить накладно. пусть болтается себе там в комроке, пишет свой говнокод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:27 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, МСУСначала ты говорил, что нужен DI. Потом после того, как тебя хорошенько отшлепали, ты начал предлагать еще более безумные варианты - синглтон или экстеншен для контроллера. Потом ты с треском провалился по безопасности, абсолютно не разобравшись в предметной области построения секурити классов. И теперь на тебе - ты видишь в этом сахар. вкупе к раздутому ЧСВ, еще и развитое воображение. чего несешь? вопрос изначально состоит в том, где может понадобиться базовый контроллер. убедительного примера от тебя так и не последовало. единственный код, который ты мне скинул легко переписался на фильтрах. остальное все бла-бла-бла, переиначивание, обезьянки, какие-то шлепания, попытка съехать на реализацию секьюрити, которая сам же и сказал, к контроллеру не привязана, а нужна во всем приложении. если так, то какого черта??? при чем тогда тут базовый контроллер? что за шиза? ответь по существу, если есть что. Вопрос изначально состоит в том, что ты нихрена не понимаешь предметики - и лезешь своим носом в дела, с которыми не имел опыта работать. Если интересно помыслишь над секурити абстракциями, наследования ролей, наследования правил (пермиссий), управлениями контейнерами групп, динамических ролевых условий (фейков) - посмотри мой старенький проект по кастомизации мембершипа: http://msadmin.codeplex.com Хотя рано тебе такие вещи давать. Если такая безопасность ...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). для тебя кажется ошибкой архитектуры, то пока могу посоветовать сходить в сад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:29 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, МСУ Безопасность (CanView, CanEdit, CanDelete, Can..., Can..., ...) намного сложнее и замороченнее, чем User.IsInRole. не забудем добавить: «.. у МСУ», ибо этот товарищь обажает все усложнять, так он выглядит гораздо статней, умнее. и нужнее к слову говоря, ибо никто кроме него в коде не разберется. к любой программе, вышедшей из под рук МСУ требуется обязательное приложение: МСУ. видел я таких. и уволить нельзя, и оставить накладно. пусть болтается себе там в комроке, пишет свой говнокод. Ты просто бестолочь, которой нечего сказать по теме. Которая не разбирается в предметики. Которая не отвечает на прямые вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:30 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУВопрос изначально состоит в том, что ты нихрена не понимаешь предметики - и лезешь своим носом в дела, с которыми не имел опыта работать. Если интересно помыслишь над секурити абстракциями, наследования ролей, наследования правил (пермиссий), управлениями контейнерами групп, динамических ролевых условий (фейков) - посмотри мой старенький проект по кастомизации мембершипа: http://msadmin.codeplex.com Хотя рано тебе такие вещи давать. Если такая безопасность ...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). для тебя кажется ошибкой архитектуры, то пока могу посоветовать сходить в сад. конечно ошибка архитектуры! кто ж так пишет!? какого хрена у тебя роли на секьюрити прописаны жестко в коде? в коде можно оперировать ролями. конкретные права на уровне данных, там же и привязка к ролям. ты же все смешал и называешь это стандартным подходом. а еще скидываешь неподдерживаемое старье типа http://msadmin.codeplex.com/ — знатнейшее говнокодище. видимо им ты и руководствуешься в разработке )) дергаешь, небось, куски кода?? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:33 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttконечно ошибка архитектуры! кто ж так пишет!? какого хрена у тебя роли на секьюрити прописаны жестко в коде? Что такое "роли на секьюрити"? А где должны прописываться роли как не в коде? hVosttв коде можно оперировать ролями. конкретные права на уровне данных, там же и привязка к ролям. ты же все смешал и называешь это стандартным подходом. Я тебе 10 раз уже сказал, не только ролями. Можно оперировать всем - типами документов, текущей датой, погоде на луне. И на основе этих условий строить секурити конструкции. Этой логикой отруливает специальный класс. hVosttа еще скидываешь неподдерживаемое старье типа http://msadmin.codeplex.com/ — знатнейшее говнокодище. видимо им ты и руководствуешься в разработке )) дергаешь, небось, куски кода?? )) Что можно объяснить идиоту? То, что он идиот? Не поверит и запротестует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:36 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его. 1. В приложении 2 роли, админ и менеджер 2. Справочник продуктов 3. Нужно дать доступ для справочника продуктов (Index) только для админа и менеджера 4. Админу разрешается всё 5. Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня. Это элементарнейшая безопасность, детский сад просто. Набрал попкорна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:43 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttГде-то в степи, вопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении, при развитии фреймворка (в будущих версиях MVC 5,6,...), в комплексном тестировании и в командной работе. т.е. в общем и целом. я понимаю, что конкретной задаче конкретное решение, но мы говорим про фреймворк в целом, а фреймворк — это уже само по себе общее решение для огромной группы задач. вот о нем речь и идет. кто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов «давай задачу» в этом топике.Флейм какой-то пошёл. В первом посте топика ничего не сказано про "видимое удобство быстрого доступа к объектам просунутое через базовый контроллер". Что за сферические объекты такие? В будущих версиях MVC контроллер перестанет быть контроллером, перестанет содержать логику обработки действий пользователя, пусть и примитивную? Тогда это будет уже другой MV* шаблон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:44 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.Можно я за него:hVosttкто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:47 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
skyANAМСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.Можно я за него:hVosttкто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:47 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt, разумеется, хотелось бы увидеть реализацию на IActionFilter :) P.S. Только не говори нам, что опять бизнес требование у меня идиотское и архитектура задачи - говно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 12:53 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, Модератор: Похоже, давно тебя не банили. Не хочешь - не отвечай. А хамить-то мемберам зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:08 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУМенеджеру разрешается просматривать только продукты с категориями 1, 2, 3 Зачем привязывать роли к конкретным категориям? В таком случае, добавляю поле в таблицу продуктов, и отмечаю как продукты для менеджера. Остальное делается в экшене Index, зачем там фильтры или базовый контроллер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:19 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVostt у меня есть мастер страница и много контентных страниц. на мастере! мне нужно выводить данные из хранилища. вопрос: как мне сделать подобное, не используя базовый контроллер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:31 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его. 1. В приложении 2 роли, админ и менеджер 2. Справочник продуктов 3. Нужно дать доступ для справочника продуктов (Index) только для админа и менеджера 4. Админу разрешается всё 5. Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня. Это элементарнейшая безопасность, детский сад просто. Набрал попкорна. 1. На экшен справочника [Authorize(Roles = "admin,manager")] 2. Во вью рендерить кнопки изменения при User.IsInRole("admin") 3. На экшены изменения [Authorize(Roles = "admin")] 4. Что менеджеру можно просмотривать продукты с категориями и датой, это решается в IProductService.GetProducts(), контроллеру должно быть фиолетово, что сервис отдаст. Что отдаст, то и покажет, сервису виднее что отдавать и по какой логике. Если скажешь что фильтровать по юзерам данные должен контроллер, тогда я тебе сразу скажу, архитектура -- УГ. 5. КАКОЕ это всё имеет отношение к вопросу БАЗОВОГО контроллера?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:41 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVC hVostt у меня есть мастер страница и много контентных страниц. на мастере! мне нужно выводить данные из хранилища. вопрос: как мне сделать подобное, не используя базовый контроллер? готовь эти данные в глобальном фильтре, суй их во ViewData, который для этого и был предназначен. хочешь «сахара»? добавь нужные экстеншионы к ViewData. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:42 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
skyANA, я понял уже, что вы зашли чисто поржать )) я говорил о конкретной задаче в начале топика, а? откройте 1-ую страницу, первое сообщение в теме и перечитайте. ну пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:45 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVC hVostt у меня есть мастер страница и много контентных страниц. на мастере! мне нужно выводить данные из хранилища. вопрос: как мне сделать подобное, не используя базовый контроллер? Код: c# 1. 2. Код: c# 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 13:55 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, не исключено написание своих фильтров типа Authorize, главное, что этому не место в контроллере. контроллер тем и замечателен, что там содержится минимум кода. в основном вызовы нужных Services и аспекты. еще скажи логику кеширования ты реализуешь в базовом контроллере, чем уже окончательно добьёшь мой мозг. я прошу кейс, где реализация кастомного базового контроллера будет действительно лучше аспектов и других возможностей фреймворка, давая ощутимые преимущества в архитектуре приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 14:00 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, я понял уже, что вы зашли чисто поржать )) я говорил о конкретной задаче в начале топика, а? откройте 1-ую страницу, первое сообщение в теме и перечитайте. ну пожалуйста...Читал и отвечал даже на него. И конкретный пример привёл. И Вы вроде даже согласились, что в предложенном мной примере базовый контроллер имеет смысл. Но при этом добавили какие-то не понятные мне рассуждения про подсовывания чего-то куда-то. Вы мне можете обяснить, что этим хотели сказать в контексте предложеного мной кейса, или продолжите дальше флеймить с МСУ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 14:35 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
ПарамонЗачем привязывать роли к конкретным категориям? Роли не привязаны к конкретным категориям, с чего ты взял? ПарамонВ таком случае, добавляю поле в таблицу продуктов, и отмечаю как продукты для менеджера. Зачем что-то добавлять в таблицу продуктов и отмечать? Продукты могут быть не только для роли, продукты могут быть, например, для пользователей, чьи покупки > 100 руб. Что, будешь добавлять поле в таблицу продуктов? ПарамонОстальное делается в экшене Index, зачем там фильтры или базовый контроллер. Экшен тут вообще идет лесом, ты чего. Всего 100 продуктов. Все они доступны админу, а манагеру - только 50. Причем тут вообще экшен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 14:38 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его. 1. В приложении 2 роли, админ и менеджер 2. Справочник продуктов 3. Нужно дать доступ для справочника продуктов (Index) только для админа и менеджера 4. Админу разрешается всё 5. Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня. Это элементарнейшая безопасность, детский сад просто. Набрал попкорна. 1. На экшен справочника [Authorize(Roles = "admin,manager")] 2. Во вью рендерить кнопки изменения при User.IsInRole("admin") 3. На экшены изменения [Authorize(Roles = "admin")] 4. Что менеджеру можно просмотривать продукты с категориями и датой, это решается в IProductService.GetProducts(), контроллеру должно быть фиолетово, что сервис отдаст. Что отдаст, то и покажет, сервису виднее что отдавать и по какой логике. Если скажешь что фильтровать по юзерам данные должен контроллер, тогда я тебе сразу скажу, архитектура -- УГ. 5. КАКОЕ это всё имеет отношение к вопросу БАЗОВОГО контроллера?????? Не торопи коней - идём дальше. Теперь нам нужно показывать все продукты менеджеру (Index), но доступные для редактирования (продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня) подсвечивать. Более того, в карточке продукта (Index/{id}) нам нужно запрещать просмотр, если категория не 1-3 и дата отгрузки <> вчера / сегодня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 14:45 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, не исключено написание своих фильтров типа Authorize Это не нужно, т.к. речь не о Authorize, а о построении UI в разрезе полномочий. hVosttглавное, что этому не место в контроллере. А у кого этому место в контроллере? Этим должен заниматься отдельный класс и только он. Базовый контроллер - проводник к этому классу. hVosttконтроллер тем и замечателен, что там содержится минимум кода. в основном вызовы нужных Services и аспекты. еще скажи логику кеширования ты реализуешь в базовом контроллере, чем уже окончательно добьёшь мой мозг. У контроллере нет реализации, ты долго будешь тупить? hVosttя прошу кейс, где реализация кастомного базового контроллера будет действительно лучше аспектов и других возможностей фреймворка, давая ощутимые преимущества в архитектуре приложения. Я тебе уже достаточно привел примеров, ты просто до них еще не дорос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 14:48 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУПарамонЗачем привязывать роли к конкретным категориям? Роли не привязаны к конкретным категориям, с чего ты взял? МСУ Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3 МСУЭкшен тут вообще идет лесом, ты чего. Всего 100 продуктов. Все они доступны админу, а манагеру - только 50. Причем тут вообще экшен? Это примерно то, что имел в виду. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Типа того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:13 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУНе торопи коней - идём дальше. Теперь нам нужно показывать все продукты менеджеру (Index), но доступные для редактирования (продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня) подсвечивать. Более того, в карточке продукта (Index/{id}) нам нужно запрещать просмотр, если категория не 1-3 и дата отгрузки <> вчера / сегодня. Если речь идёт о доступе на уровне данных, а не только действий, бизнес-логика знает о ролях и элементах доступа. Элементы доступа для кейса: "products/index", "products/edit". Входят в роль "manager". IProductManagerService.GetList() возвращает для каждой записи также элементы доступа к ним для роли пользователя . Контроллер во вью передаёт модель с маркером индикации, в зависимости от элемента доступа, вью подсвечивает записи с соответствующим маркером и дает ссылку на страницу редактирования товара. IProductManagetService.GetItem() возвращает тоже самое только в одном экземпляре по Id. действие Index/{id} контроллера вызывает вью, информирующую пользователя о том, что доступ запрещен, если нет нужного элемента доступа . контроллер не должен реализовывать логику доступа к данным ни в каком виде. все, что ему требуется, это информация от сервиса, что можно, а что нельзя делать с полученной информацией. сократить расходы на кодинг можно, создав свой фильтр AccessAction(AccessItem = "product/edit"), действующий на событие Executed и перехватывающий вывод Result, если модель не обладает нужным AccessItem. тогда действие контроллера вообще лишается необходимости каких-либо проверок. получает данные и вызывает вью, как будто все все можно. опят таки, здесь ни в каком месте не нужен базовый контроллер. все решается нужным кастомным фильтром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:28 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttДайте убедительный довод зачем может понадобиться определять свой базовый контроллер? Что то я вообще не догоняю об чем речь, так можно переопределять базовый контроллер или нет? там для всяких фентифлюшек быстрого доступа к чему то, типа как генерации контракта на работу, ленивого кеширования чего то общего и тд. Конечно речь не идет там расположить весь механизм какой нибудь пиздятины типа вставки удаления модификации данных и отслеживания разрешений. Но быстрый доступ к объекту который отвечает за это матерное слово - почему нет? Другой вопрос стоит ли создавать такой объект, или просто въебенить через фильтры или еще как - альтернативно хранению его в переопределенном бк., так это к теме топика отношение не имеет, так же как мой жидкий стул, к погоде на ямайке... ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:35 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
ПарамонЭто примерно то, что имел в виду. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Типа того. Так не делают - это раз (упаришься все роли перечислять для всех вариантов). Во-вторых, как будешь вот такие задачи решать 14146874 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:43 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttЕсли речь идёт о доступе на уровне данных, а не только действий, бизнес-логика знает о ролях и элементах доступа. Элементы доступа для кейса: "products/index", "products/edit". Входят в роль "manager". Идет речь о любых уровнях - и данных и действий. "Бизнес-логика" - что за логика и где она должна размещаться? hVosttIProductManagerService.GetList() возвращает для каждой записи также элементы доступа к ним для роли пользователя . Контроллер во вью передаёт модель с маркером индикации, в зависимости от элемента доступа, вью подсвечивает записи с соответствующим маркером и дает ссылку на страницу редактирования товара. Логика выставления этого маркера должна быть в контроллере? Ты перечишь сам себе, сначала в DI, потом в фильтре, потом в глобальном синглтоне. А теперь - в контроллере? Молодец, чё. hVosttIProductManagetService.GetItem() возвращает тоже самое только в одном экземпляре по Id. действие Index/{id} контроллера вызывает вью, информирующую пользователя о том, что доступ запрещен, если нет нужного элемента доступа . А причем тут "доступ запрещен" и "просто нет элемента"? hVosttконтроллер не должен реализовывать логику доступа к данным ни в каком виде. все, что ему требуется, это информация от сервиса, что можно, а что нельзя делать с полученной информацией. Ничего не понимаю, то должен, то не должен. Ты определись уже, кто что должен. hVosttопят таки, здесь ни в каком месте не нужен базовый контроллер. все решается нужным кастомным фильтром. Десятый раз повторяю, где хранится логика: ...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). ? В фильтре? А как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:52 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Где-то в степиhVosttДайте убедительный довод зачем может понадобиться определять свой базовый контроллер? Что то я вообще не догоняю об чем речь, так можно переопределять базовый контроллер или нет? там для всяких фентифлюшек быстрого доступа к чему то, типа как генерации контракта на работу, ленивого кеширования чего то общего и тд. Конечно речь не идет там расположить весь механизм какой нибудь пиздятины типа вставки удаления модификации данных и отслеживания разрешений. Но быстрый доступ к объекту который отвечает за это матерное слово - почему нет? Другой вопрос стоит ли создавать такой объект, или просто въебенить через фильтры или еще как - альтернативно хранению его в переопределенном бк., так это к теме топика отношение не имеет, так же как мой жидкий стул, к погоде на ямайке... ??? Он уже сам запутался в показаниях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:53 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУТак не делают - это раз (упаришься все роли перечислять для всех вариантов). Во-вторых, как будешь вот такие задачи решать Условия для всех вариантов, описываюся в сервисном слое, не вижу проблемы. (это для примера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 15:56 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУТак не делают - это раз (упаришься все роли перечислять для всех вариантов). Во-вторых, как будешь вот такие задачи решать Условия для всех вариантов, описываюся в сервисном слое, не вижу проблемы. (это для примера) Условия для всех вариантов описываются в отдельной песочнице (Security), а в сервисном слове уже используется эта информация. А базовый контроллер - отличное место для размещения экземпляра этой Security. ...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:00 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУА как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.? Не говори что тянешь все 100 продуктов, чтобы показать 50 из них менеджеру по условию во вью ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:01 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, в бизнес-логике решать. это не задача контроллера. какие-то действия еще можно разрешать в зависимости от роли. но не в случае с данными. все что должен реализовывать контроллер, это получать данные от M, передавать их на V, получать данные от V и передавать их M. в трансфере решаются проблемы биндинга и валидации, давать доступ к данным или не давать решает М, информируя об этом контроллер, он уже рендерит нужную вью. как это можно вынести в абстракцию я уже сказал, делается нужный фильтр-перехватчик и вешается на действие или на контроллер в целом. никакой базовый контроллер в этой схеме секьюрити нафиг не впился. если уже как было сказано, если база расширяется чисто для удобства доступа к сервисам, то ради бога. никакую архитектурную проблему/задачу это не решает и остается только на совести программиста. мой вопрос относится только к тому, когда это действительно нужно. прокидывать ссылки на сервисы — можно, но не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:02 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Парамон, более того, бывают случаи, когда безопасность на уровне коллекции элементов невозможно описать для IQueryable<T>, т.к. запрос не может транслироваться или будет не оптимально / трудозатратно. Поэтому обычно делают IQueryable<T> + HasProductView. Ну понял, о чем, думаю. Это hVostt'у нужно всё по 100 раз пережевывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:04 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ new[] { 1, 2, 3 }.Contains(product.CategoryId) Хардкод категорий улыбнул ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:04 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУА как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.? Не говори что тянешь все 100 продуктов, чтобы показать 50 из них менеджеру по условию во вью ) С работой IQueryable не знаком? Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:05 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУ new[] { 1, 2, 3 }.Contains(product.CategoryId) Хардкод категорий улыбнул ) Не принципиально, мы обсуждаем концепцию. Надо - выноси в енумы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:06 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, я заторчал от этого коммента :) Конечно речь не идет там расположить весь механизм какой нибудь пиздятины типа вставки удаления модификации данных и отслеживания разрешений. Но быстрый доступ к объекту который отвечает за это матерное слово - почему нет? конечно можно, ради бога, но нужно ли? решает это какую-то задачу так, что по-другому лучше не сделаешь? пока не вижу достойных примером на эту роль. Другой вопрос стоит ли создавать такой объект, или просто въебенить через фильтры или еще как - альтернативно хранению его в переопределенном бк., так это к теме топика отношение не имеет, так же как мой жидкий стул, к погоде на ямайке... ??? вы лучше поделитесь своей травой )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:06 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, в бизнес-логике решать. это не задача контроллера. Ты почему ведешь себя как баран у новых ворот? Тебе уже все говорят, что логики в контроллере нет. Ты не понимаешь этого? hVosttкакие-то действия еще можно разрешать в зависимости от роли. но не в случае с данными. Такое ощущение, что я разговариваю со стеной, ты ни в какую не хочешь понимать, что тебе пишут. Ты в вакууме? hVosttкак это можно вынести в абстракцию я уже сказал, делается нужный фильтр-перехватчик и вешается на действие или на контроллер в целом. никакой базовый контроллер в этой схеме секьюрити нафиг не впился. Я тебе 100 раз повторил - этот вариант не устроит, т.к. UI отстраивается в разрезе полномочий пользователя. 101 раз повторить? hVosttмой вопрос относится только к тому, когда это действительно нужно. прокидывать ссылки на сервисы — можно, но не нужно. Значит таки уже можно? Великолепно. А почему не нужно, поведаешь нам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:09 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУОн уже сам запутался в показаниях. говори только за себя, плз. не уймешь своё чсв, да? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:11 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУОн уже сам запутался в показаниях. говори только за себя, плз. не уймешь своё чсв, да? )) Тебе 100 раз повторишь одно и тоже, и только со 101 ты начинаешь понимать, что тебе пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:13 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУДесятый раз повторяю, где хранится логика: ...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7). ? В фильтре? А как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.? в бизнес-логике. читать умеешь? или то комменты по диагонале читаешь, увидел слово, вырвал из контекста и достебался с умным видом. очки на нос не лезут? поправь быстрей и прочитай вот это: логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. логика доступа к данным хранится в бизнес-логике. может лучше картинку? секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа. секьюрити не решает что и кому показывать, разрешать или не разрешать. а если у тебя решает, то мне искренне тебя жаль. серьезно. это уже болезнь в последней стадии, и я не уверен что это лечится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:16 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttв бизнес-логике. читать умеешь? или то комменты по диагонале читаешь, увидел слово, вырвал из контекста и достебался с умным видом. очки на нос не лезут? поправь быстрей и прочитай вот это: Логика хранится в логике? Масло масляное. Слушай, ты не только хреновый программист, ты еще и русский язык не знаешь. Для тех, кто засел в танке - "в бизнес-логике" - это что такое? Может ты во View хранишь свою бизнес логику. Может в контроллере. Может в репозитории. Опять трудности с пониманием прямых понятных вопросов? hVosttсекьюрити не решает что и кому показывать, разрешать или не разрешать. а если у тебя решает, то мне искренне тебя жаль. серьезно. это уже болезнь в последней стадии, и я не уверен что это лечится. Где у меня секьюрити что-то решает, покажи пальцем? Ты инопланетянен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:20 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУhVosttсекьюрити не решает что и кому показывать, разрешать или не разрешать. а если у тебя решает, то мне искренне тебя жаль. серьезно. это уже болезнь в последней стадии, и я не уверен что это лечится. Где у меня секьюрити что-то решает, покажи пальцем? Ты инопланетянен? У меня секьюрити отвечает на вопрос, может ли пользователь что-то сделать в рамках своих ролей и бизнес-требований. Всё. А решать может кто угодно - view, controller, dataservice, repository и т.д. Ты код каким местом читаешь, признавайся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:23 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
модель доступа: ПОЛЬЗОВАТЕЛЬ 1-* РОЛЬ РОЛЬ 1-* ЭЛЕМЕНТ-ДОСТУПА (для особо тяжелых случаев, тяжеловесных систем, странной и хитрой логикой) ПОЛЬЗОВАТЕЛЬ 1-* ЭЛЕМЕНТ-ДОСТУПА легенда: 1-* — один-ко-многим задачи секьюрити: 1) дай мне все роли вот этого пользователя 2) дай мне всех пользователей с этой ролью 3) дай мне все элементы-доступа этой роли / этого пользователя 4) проверь есть ли роль у этого пользователя 5) проверь есть ли элемент-доступа у этой роли / этого пользователя 6........) добавление, изменение сущностей и связей между ними ВСЁ! и не надо пришивать к этой стройной самодостаточной логике что-то еще. проверку данных например. или 500 методов типа: - можно ли пользователю записать продукт - можно ли пользователю прочитать продукт - можно ли пользователю отобразить продукт в списке ....... потому что это неподерживаемое говнокодище. самое днище уродливых неподдерживаемых архитектур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:24 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУУ меня секьюрити отвечает на вопрос, может ли пользователь что-то сделать в рамках своих ролей и бизнес-требований. Всё. А решать может кто угодно - view, controller, dataservice, repository и т.д. Ты код каким местом читаешь, признавайся? найди сам способ себе навредить. стена, мотыга, бензин, спички. с какого перепуга View и контроллер что-то решают? почему? why? ну я понимаю, что у тебя они решают. но зачееееееем???? кто позволил, блин!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:26 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttзадачи секьюрити: 1) дай мне все роли вот этого пользователя 2) дай мне всех пользователей с этой ролью 3) дай мне все элементы-доступа этой роли / этого пользователя 4) проверь есть ли роль у этого пользователя 5) проверь есть ли элемент-доступа у этой роли / этого пользователя 6........) добавление, изменение сущностей и связей между ними ВСЁ! и не надо пришивать к этой стройной самодостаточной логике что-то еще. проверку данных например. или 500 методов типа: - можно ли пользователю записать продукт - можно ли пользователю прочитать продукт - можно ли пользователю отобразить продукт в списке ....... потому что это неподерживаемое говнокодище. самое днище уродливых неподдерживаемых архитектур. Неподерживаемое говнокодище в воспаленном воображении, а не в требованиях. Задача секьюрити на порядки шире и мощнее, чем ты тут из 6 пунктов расписал бред сивой кобылы. Требование бизнеса - в соотв. с ФЗ "О персональных данных" показывать такие-то колонки для таких-то ролей. Банальная задача, в которой по роли отстраивается UI. Это неподдерживаемая архитектура? Еще пример: для таких-то ролей давать на редактирование документы со статусом 3 и 5, при условии, что год дата документа - прошлогодний, а так же по документу были высланы в конкретные инстанции уведомления. Просто в силу своего скромного опыта ты не представляешь себе, какие сложные конструкции в разрезе секьюрити могут быть у бизнеса. За гавнокодище и уродливую архитектуру тебя просто уволят нахрен как ненужную бестолочь, которая много говорит, а сделать не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:31 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУУ меня секьюрити отвечает на вопрос, может ли пользователь что-то сделать в рамках своих ролей и бизнес-требований. Всё. А решать может кто угодно - view, controller, dataservice, repository и т.д. Ты код каким местом читаешь, признавайся? найди сам способ себе навредить. стена, мотыга, бензин, спички. с какого перепуга View и контроллер что-то решают? почему? why? ну я понимаю, что у тебя они решают. но зачееееееем???? кто позволил, блин!? Ты в вакууме? Я тебе 100500 раз твержу о том, что экшенфильтр не подойдет, т.к. вью должна отстраивать UI в разрезе секурити. И тут ты просыпаешься и задаешь этот идиотский вопрос. Жесть. Отечаю на вопрос: razor в зависимости от привилегий юзера (для бронированных, привилегия - это не только роль) строит UI. Такой привилегии - такие колонки, такой привилегии - такие кнопки, такой привилегии - вот такую возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:34 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУСлушай, ты не только хреновый программист, ты еще и русский язык не знаешь. я нигде не говорил, что обалдеть какое талантище и гуру в программировании. на эту роль у нас тянешь только ты. все что произнес МСУ не подлежит обсуждению. это истина в последней инстанции. попросил привести пример, когда базовый контроллер действительно решает какую-то задачу, которая не решается IDR/DI и аспектами. обеспечивания мастер-страниц данными? глобальный фильтр лучше подходит для этой роли. прокидывание ссылок на сервисы? вообще какая-то хрень. вместо конкретного примера мы рассуждаем о том, как реализоваывать секьюрити и доступ к данным. при чем тут базовый контроллер? может на самом деле, ты к этому ведешь? давай сразу с конца? не будем заходить из далека. обещаю, что если увижу убедительный пример, соглашусь, что ты прав и спорить не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:36 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
авторготовь эти данные в глобальном фильтре, суй их во ViewData 14147102 - поржал!!! Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. как бэ всё! ИМХО спорящие тут о существовании жизни на марсе (её отсутствии!) вообще слабо представляют, что происходит за кулисами MVC в целом (ASP.NET MVC FW в частности)!!! 14147347 +100500!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:38 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVC, бред. я добавлю один глобальный фильтр. а ты будешь каждый раз проверять не забыл ли ты отнаследоваться от своей базы. утонченный мазохист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:41 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttя нигде не говорил, что обалдеть какое талантище и гуру в программировании. Правильно, зачем ламеру такие регалии. hVosttна эту роль у нас тянешь только ты. все что произнес МСУ не подлежит обсуждению. это истина в последней инстанции. Истина только в библии. А если ты с моими аргументами не согласен - выскажи свои аргументы против. Но по ты не то что аргументы, ты понять вопроса толком не можешь. Тебе люди конкретные примеры дают, ты несешь какую-то дурь и свиливаешь в сторону. Как можно общаться с таким инопланетянином? hVosttпопросил привести пример, когда базовый контроллер действительно решает какую-то задачу, которая не решается IDR/DI и аспектами. обеспечивания мастер-страниц данными? глобальный фильтр лучше подходит для этой роли. прокидывание ссылок на сервисы? вообще какая-то хрень. Тебе привели примеры. Ты тычешь своими DI, которые как кобыле пятое колесо. Десятый раз говорю - экшен фильтр не решит задач секурити для отстраивания UI. Ты не понимаешь русского языка? hVosttвместо конкретного примера мы рассуждаем о том, как реализоваывать секьюрити и доступ к данным. при чем тут базовый контроллер? может на самом деле, ты к этому ведешь? давай сразу с конца? не будем заходить из далека. обещаю, что если увижу убедительный пример, соглашусь, что ты прав и спорить не буду. Убей себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:41 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, а за пропихивание данных в конструкторе линеечкой и по-больней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:43 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, МСУТебе привели примеры. Ты тычешь своими DI, которые как кобыле пятое колесо. Десятый раз говорю - экшен фильтр не решит задач секурити для отстраивания UI. Ты не понимаешь русского языка? я пока не увидел реализацию задачи секурити для отстраивания UI, решенную на базовом контроллере. пока только жалкое блеяние в виде умных слов. пример в студию! и я тебя удивлю как это легко решится без БК. но если боишься слажать, можешь просто промолчать. я пойму, не переживай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:45 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVCавторготовь эти данные в глобальном фильтре, суй их во ViewData 14147102 - поржал!!! Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. как бэ всё! ИМХО спорящие тут о существовании жизни на марсе (её отсутствии!) вообще слабо представляют, что происходит за кулисами MVC в целом (ASP.NET MVC FW в частности)!!! 14147347 +100500!!! На чем поржал, над своим непонимаение фильтров? Сам себе плюсы ставишь? ) ViewData выбрось на помойку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:52 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Имхо, вся тема - троллинг чистой воды, и не несет смысловой нагрузки 14147510 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:56 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, а за пропихивание данных в конструкторе линеечкой и по-больней. О как. А с каких это пор пропихивание данных в конструкторе стало запрещено? Я смотрю, у тебя одни запреты. Аргументы будут? Или опять пошуршать зашел? hVosttя пока не увидел реализацию задачи секурити для отстраивания UI, решенную на базовом контроллере. Я и не сомневался, что тебе нужно всё разжевывать и показывать. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Можно экземпляр Security и в ProductModel вбить в контроллере, не принципиально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:59 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, только вашей проницательности этой теме и не хватало :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 16:59 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Флейм, флейм, флейм! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:06 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
Серж, пора закрывать, или чистить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:07 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУМожно экземпляр Security и в ProductModel вбить в контроллере, не принципиально. Разумеется, все что должно быть во вью это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:11 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Узри же: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. все, МСУ, давай досвидания . не нужно больше от тебя никаких примеров. вью лезет в контроллер, охренеть просто архитектура. все компоненты друг о друге знают, ппц. так что не надо себя убивать. живи. тебя из серьезной конторы за такое попросту погонят взашей. слишком много умных слов + чрезмерно раздутое ЧСВ, а в итоге сплошное дилетанство, ничего за умными словами не стоит. можешь разродиться обезьянками, попробовать восстановить свое пошатнувшееся достоинство, но я от тебя уже ничего умного не жду, кроме потока изощренного хамства. я просил пример, убедительно доказывающий необходимость базового контроллера, а ты прислал унылое говнище, которое просто должно быть стыдно демонстрировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:12 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
МСУ, и последнее авторО как. А с каких это пор пропихивание данных в конструкторе стало запрещено? Я смотрю, у тебя одни запреты. Аргументы будут? Или опять пошуршать зашел? с тех, что в конструкторе ты конструируешь объект, и не делаешь ничего другого. НИЧЕГО. это конструктор, башка твоя тупая. почитай что такое конструктор, ё-ж-ты-моё... народ, как вы его еще терпите???? для этих целей есть Controller.Initialize Method шуруй короче учить матчасть. что не кусок кода, то косяк. устал уже с тобой препираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:24 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
авторНа чем поржал, над своим непонимаение фильтров? Сам себе плюсы ставишь? ) ViewData выбрось на помойку. а их (фильтры) нужно понимать?! ;))) любой метод контроллера вызванный с фильтром создаст ещё один класс - класс фильтра! (о боже сколько же их у тебя о великий БГ - дай нам компы помощнее!) Код: c# 1. 2. Код: c# 1. 2. 3. === Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. всё это будет приправлено какой-нибудь скоростной рефлексией и хз чем ещё!!! и ты мне предлагаешь это быдлорешение в качестве альтернативы ООП наследования ?! ПыСы: ViewData - можно назвать супердата (или как тебе угодно) - по сути - это коллекция ключ-значение, как и все последующие конгениальные решения, отменяющие её (коллекцию ключ-значение)!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:24 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVC, авторлюбой метод контроллера вызванный с фильтром создаст ещё один класс - класс фильтра! (о боже сколько же их у тебя о великий БГ - дай нам компы помощнее!) а здесь вообще занавес........... ИДИ УЧИ МАТЧАСТЬ!!!!!!!! УЧИ МАТЧАСТЬ! ТЫ НЕПРАВ ))))))) ааааааааааааааааа... закрывайте топик плииииз.. тут слишком много ГЕНИЯ МСУ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:29 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
автора здесь вообще занавес........... ИДИ УЧИ МАТЧАСТЬ!!!!!!!! УЧИ МАТЧАСТЬ! ТЫ НЕПРАВ ))))))) а ты попробуй стукнуться головой в монитор - оно всё и погаснет!!! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:31 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVC, ты несешь ---ню. откровенно незнаешь что такое фильтры и как они работают. да что уж там, не знаешь как вообще работают атрибуты. "метод контроллера вызванный с фильтром создаст ещё один класс - класс фильтра" . эт ж надо так тупануть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:38 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVCи ты мне предлагаешь это быдлорешение в качестве альтернативы ООП! Если ты уже почитал пару букварей на тему ООП, то должен был понять, что сама конструкция контроллера, это больше процедурный подход ) MVCViewData - можно назвать супердата (или как тебе угодно) - по сути - это коллекция ключ-значение, как и все последующие конгениальные решения, отменяющие её (коллекцию ключ-значение)!!! Копай в сторону типизированых вью, ты ведь про ООП там что то заливать начал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:38 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
14147644 мухаха!!! в .NET заговорили про процедурный подход?! ну давай - режь правду-матку - человек, прочитавший три книги по ООП!!! чё там с контроллером и "больше процедурным подходом" (C)? авторКопай в сторону типизированых вью, ты ведь про ООП там что то заливать начал :) любую коллекцию можно прочитать рекурсивно! для этого не нужно магии в виде TYPED!!! ИМХО правильно вам БГ мозг проливает!!! пока есть вы, остальным них... не страшно (PHP, ROR and etc.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 17:51 |
|
||
|
[MVC] Базовый контроллер
|
|||
|---|---|---|---|
|
#18+
MVCну давай - режь правду-матку - человек, прочитавший три книги по ООП!!! Зачем мне бисером то метать? MVCлюбую коллекцию можно прочитать рекурсивно! для этого не нужно магии в виде TYPED!!! ИМХО правильно вам БГ мозг проливает!!! пока есть вы, остальным них... не страшно (PHP, ROR and etc.) Пытаюсь найти связь между - "Магия в виде TYPED" и "рекурсивное чтение" :) Холиварить на тему скриптовых языков лениво ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2013, 18:13 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1358582]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
109ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 446ms |

| 0 / 0 |
