powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [MVC] Базовый контроллер
25 сообщений из 128, страница 2 из 6
[MVC] Базовый контроллер
    #38215838
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
авторДайте убедительный довод зачем может понадобиться определять свой базовый контроллер?
Passing data to the master page
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215853
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

вопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении, при развитии фреймворка (в будущих версиях MVC 5,6,...), в комплексном тестировании и в командной работе. т.е. в общем и целом. я понимаю, что конкретной задаче конкретное решение, но мы говорим про фреймворк в целом, а фреймворк — это уже само по себе общее решение для огромной группы задач. вот о нем речь и идет. кто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов «давай задачу» в этом топике.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215855
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении
Не может. Был не просто поднят вопрос (иначе тебе просто ответили бы), а были высказаны тобой бредни про сферического коня в вакууме с метанием слюны про DI и прочий шелест листьев об ООП. Почувствуй разницу между "вопрос был поднят, вопрос".
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215861
Фотография 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.
	public class AccessToModuleFilter : IActionFilter
	{
		private const string cookieName = "AccessibleMenus";

		public void OnActionExecuting(ActionExecutingContext filterContext)
		{
			var requestContext = filterContext.RequestContext;
			var cookie = requestContext.HttpContext.Request.Cookies[cookieName];
			if (cookie != null)
			{
				filterContext.Controller.ViewData[cookieName] = cookie.Value.Split(',').ToList();
				return;
			}

			AuthenticationProjectPrincipal raPrincipal = requestContext.HttpContext.User as AuthenticationProjectPrincipal;
			if (raPrincipal == null)
				return;

			IList<string> modules = GetAccessableModuleNames(raPrincipal.UserData.UserID);
			filterContext.Controller.ViewData[cookieName] = modules;

			cookie = new HttpCookie(cookieName, string.Join(",", modules.ToArray()))
			{
				Expires = DateTime.Now.AddMinutes(20)
			};
			requestContext.HttpContext.Response.Cookies.Add(cookie);
		}

		public void OnActionExecuted(ActionExecutedContext filterContext)
		{
		}


		private IList<string> GetAccessableModuleNames(int userId)
		{
			try
			{
				IList<string> modNames = new List<string>();
				foreach (var module in Enum.GetValues(typeof(Modules)))
				{
					if (this.HasUserAccessToModule(userId, Convert.ToByte(module)))
						modNames.Add(module.ToString());
				}

				return modNames;
			}

			catch (Exception e)
			{
				throw e;
			}
		}

		private bool HasUserAccessToModule(int userId, byte moduleId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					int functionId = Convert.ToInt32(Functions.Access);

					Users user = dbContext.Users
						.Include("AccessToModuleFunctions")
						.Include("Role")
						.Include("AccessToModuleFunctions.ModulesFunctions")
						.Include("AccessToModuleFunctions.ModulesFunctions.Module")
						.Include("AccessToModuleFunctions.ModulesFunctions.Function")
						.FirstOrDefault(usr => usr.ID == userId);

					if (user == null)
						return false;

					AccessToModuleFunctions userFunc = user.AccessToModuleFunctions
					 .SingleOrDefault(modFunc => modFunc.ModulesFunctions.Function.ID == functionId
						 && modFunc.ModulesFunctions.Module.ID == moduleId);
					if (userFunc == null)
					{
						if (user.Role == null)
							return false;

						userFunc = GetAccessByRoleModuleFunciton(user.Role.ID, moduleId, (long)Functions.Access);
						if (userFunc == null)
							return false;
					}

					return userFunc.HasAccess ?? false;
				}
				catch (Exception e)
				{
					throw e;
				}
			}
		}

		private AccessToModuleFunctions GetAccessByRoleModuleFunciton(int roleId, byte moduleId, long functionId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					return dbContext.AccessToModuleFunctions
						.FirstOrDefault(urmf => urmf.Role.ID == roleId && urmf.ModulesFunctions.Module.ID == moduleId
							&& urmf.ModulesFunctions.Function.ID == functionId);
				}
				catch (Exception ex)
				{
					throw ex;
				}
			}
		}

	}



1. Не засираем код базового контроллера.
2. Не заставляем никого наследоваться от базового контроллера и следить за этим.
3. Можем вешать данное поведение только на конкретные, нужные нам, контроллеры или даже на действия.
4. Если надо вообще на все контроллеры/действия, регистрируем фильтр глобально.
5. Если надо подменить срочно на другую реализацию, изменяем одну строчку в регистрации фильтров, а ты иди перелопачивай свой базовый контроллер, и успехов тебе в этом!

Если такая элементарщина вызывает у тебя проблему, я вообще не понимаю смысл нашей полемики. Иди учи матчасть, дитё.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215864
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того! В регистрации глобальных фильтров можно регистрировать интерфейс и резолвить нужную реализацию. Тогда мы сможем подменять вообще любую реализацию по заданным условиям где и как угодно. Допустим на локал-хосте одна, на продакшене другая, для тестов третья. И я погляжу как ты будешь подменять реализацию базового контроллера.

Читай книжечки всяких Фрименов и Экспозито, МСУ, практикуйся, учись. Верю, у тебя все получится. Когда-нибудь до тебя допрет, что говнокод к хорошему не приводит.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215869
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУТем неучам, кто не обрабатывает исключения в приложении и говорит, что у него никогда не падает код - не понять.

до тебя шутки юмора так же доходят, как практические знания. наверное даже книжки читать тебе бессмысленно.

МСУТо есть - секьюрити инкапсулировано в отдельном классе, отруливающим что можно делать пользователю. Сам класс прокидывается в базовом контроллере и доступен всем наследникам.

ответил выше. все это из коробки и легко решается фильтром, и неча засирать базу таким бредом. привел бы хоть один убедительный аргумент, что решается лучше всего только через базу. но не можешь же. одну лажу гонишь.

МСУА теперь подумай своим унылым мозгом, причем тут наследование? Или ты хочешь сказать, что с появлением IDependencyResolver в MVC отпала надобность в наследовании?

предпочти слабую связность наследованию. агрегацию, резолвинг, аспекты. это все лучше наследования, практически всегда. если только ты не разрабатываешь фреймворк. тогда я спорить не буду. а покажешь своё детище еще и спасибо скажу.

МСУТы как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки?

а нахрена? с самого начала я задал этот вопрос. нахрена козе баян?

МСУВот это ты зачем ляпнул? Во-первых, глупость. Во-вторых, интересно - возьми и проверь.

это был вопрос, который по-любому напрашивается. я-то проверю когда мне понадобится, но ты ж рецепт выкинул. я попросил уточнения, а ты его оказывается не знаешь. знал бы просто запостил генерируемый SQL, было бы больше пользы. но ты будешь носом воротить «тебе надо, ты и проверяй». я уже понял что ресурс ты сделал для себя исключительно, а комменты только для приёма «спасибо», только вижу не больно-то они используются по назначению... в общем, не можешь вести ресурс, не берись. не пиарь его на каждом шагу.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215875
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[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.
	public class AccessToModuleFilter : IActionFilter
	{
		private const string cookieName = "AccessibleMenus";

		public void OnActionExecuting(ActionExecutingContext filterContext)
		{
			var requestContext = filterContext.RequestContext;
			var cookie = requestContext.HttpContext.Request.Cookies[cookieName];
			if (cookie != null)
			{
				filterContext.Controller.ViewData[cookieName] = cookie.Value.Split(',').ToList();
				return;
			}

			AuthenticationProjectPrincipal raPrincipal = requestContext.HttpContext.User as AuthenticationProjectPrincipal;
			if (raPrincipal == null)
				return;

			IList<string> modules = GetAccessableModuleNames(raPrincipal.UserData.UserID);
			filterContext.Controller.ViewData[cookieName] = modules;

			cookie = new HttpCookie(cookieName, string.Join(",", modules.ToArray()))
			{
				Expires = DateTime.Now.AddMinutes(20)
			};
			requestContext.HttpContext.Response.Cookies.Add(cookie);
		}

		public void OnActionExecuted(ActionExecutedContext filterContext)
		{
		}


		private IList<string> GetAccessableModuleNames(int userId)
		{
			try
			{
				IList<string> modNames = new List<string>();
				foreach (var module in Enum.GetValues(typeof(Modules)))
				{
					if (this.HasUserAccessToModule(userId, Convert.ToByte(module)))
						modNames.Add(module.ToString());
				}

				return modNames;
			}

			catch (Exception e)
			{
				throw e;
			}
		}

		private bool HasUserAccessToModule(int userId, byte moduleId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					int functionId = Convert.ToInt32(Functions.Access);

					Users user = dbContext.Users
						.Include("AccessToModuleFunctions")
						.Include("Role")
						.Include("AccessToModuleFunctions.ModulesFunctions")
						.Include("AccessToModuleFunctions.ModulesFunctions.Module")
						.Include("AccessToModuleFunctions.ModulesFunctions.Function")
						.FirstOrDefault(usr => usr.ID == userId);

					if (user == null)
						return false;

					AccessToModuleFunctions userFunc = user.AccessToModuleFunctions
					 .SingleOrDefault(modFunc => modFunc.ModulesFunctions.Function.ID == functionId
						 && modFunc.ModulesFunctions.Module.ID == moduleId);
					if (userFunc == null)
					{
						if (user.Role == null)
							return false;

						userFunc = GetAccessByRoleModuleFunciton(user.Role.ID, moduleId, (long)Functions.Access);
						if (userFunc == null)
							return false;
					}

					return userFunc.HasAccess ?? false;
				}
				catch (Exception e)
				{
					throw e;
				}
			}
		}

		private AccessToModuleFunctions GetAccessByRoleModuleFunciton(int roleId, byte moduleId, long functionId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					return dbContext.AccessToModuleFunctions
						.FirstOrDefault(urmf => urmf.Role.ID == roleId && urmf.ModulesFunctions.Module.ID == moduleId
							&& urmf.ModulesFunctions.Function.ID == functionId);
				}
				catch (Exception ex)
				{
					throw ex;
				}
			}
		}

	}



Садись, неуч, двойка. За реализацию секьюрити - уволить без выплаты материального пособия.

Смотри и учись - логика сеьюрити должна быть запечана в отдельном классе, а не фильтре, контроллере и т.п.:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class Security
{
    public SecurityUser User { get; set; }
    public bool HasUserAccessToModule(int userId, byte moduleId)
    {
        return true;
    }
}

public class SecurityUser
{
    public int Id { get; set; }
    public bool IsAdmin { get; set; }
    public bool IsMember { get; set; }
}



Базовый контроллер - лишь удобный проводник для логики безопасности:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseController : Controller
{
    public Security Security { get; private set; }

    public BaseController()
    {
        this.Security = new Security();
    }
}



Всё. Теперь мы можем удобно отруливать свойством Security во всех контроллерах и представлениях (через ViewContext.Controller) без каких-либо телодвижений с моделями представлений.

hVosttЕсли такая элементарщина вызывает у тебя проблему, я вообще не понимаю смысл нашей полемики. Иди учи матчасть, дитё.
Если это для тебя такая же элементарщина, как обработка исключений в приложении и логирование - я плакал.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215876
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttБолее того! В регистрации глобальных фильтров можно регистрировать интерфейс и резолвить нужную реализацию. Тогда мы сможем подменять вообще любую реализацию по заданным условиям где и как угодно. Допустим на локал-хосте одна, на продакшене другая, для тестов третья. И я погляжу как ты будешь подменять реализацию базового контроллера.

Читай книжечки всяких Фрименов и Экспозито, МСУ, практикуйся, учись. Верю, у тебя все получится. Когда-нибудь до тебя допрет, что говнокод к хорошему не приводит.


Дурилко картонное, как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав? Тебе не то, что Экспозито, тебе программировать противопоказано, теоретик.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215883
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУСадись, неуч, двойка. За реализацию секьюрити - уволить без выплаты материального пособия.

ты вообще в адеквате?

вот твой коммент:

МСУВ примере приводится демонстрация функционала, доступная в базовом контроллере, а именно секурность - HasUserAccessToModule, о которой я говорил тут 14144190 . Расскажи нам, как собираешься подобное реализовывать в глобальном фильтре? Побежал за попкорном.

ты привел пример, я его перебросил на фильтры. без изменений в логике. и работать он будет ничуть не хуже, чем в базовом классе. плюсов от того, что это теперь фильтр на много больше. минусов ни одного нет. и это всё тот же код. абсолютно. только в фильтрах. т.е. ты назвал говнокодом, пример который сам же и привёл. ты как собака, которая кусает себя за хвост )))))))

мдааааааааааааааааа..................... умора ей богу.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я не собираюсь здесь обсуждать реализацию секьюрити, не съезжай с темы. хочешь обсудить как правильно готовить секьюрити, создавай отдельную тему, обсудим. не уходи от основного вопроса. давай мне убойный пример, такой где собственный базовый контроллер будет действительно иметь смысл.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215897
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttдо тебя шутки юмора так же доходят, как практические знания. наверное даже книжки читать тебе бессмысленно.
Не обработка исключений - это нынче такие шутки у тебя? Шутник, однако.

hVosttответил выше. все это из коробки и легко решается фильтром, и неча засирать базу таким бредом. привел бы хоть один убедительный аргумент, что решается лучше всего только через базу. но не можешь же. одну лажу гонишь.
С фильтром ты можешь сходить в ясли и детей посмешить. Я тебе ответил почему - лажа у тебя в голове от непонимания.

hVosttпредпочти слабую связность наследованию. агрегацию, резолвинг, аспекты. это все лучше наследования, практически всегда. если только ты не разрабатываешь фреймворк. тогда я спорить не буду. а покажешь своё детище еще и спасибо скажу.
Для каждой задачи - своя отвертка. Ты же пытаешь подо всё подогнать молоток. Это лишь говорит об отсутствии реального опыта - просто унылая кодирующая обезьянка, которая смотрит как дяди пишут. Тебе дали реальную задачу - ты начал что-то булькать невнятное. Потом ты начал плести бред, что да, базовый контроллер нужен. Теперь ты несешь бред про DI. Ты определись, чудо, больно смешно смотреть на твои рыпанья.

hVosttМСУТы как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки?
а нахрена? с самого начала я задал этот вопрос. нахрена козе баян?
Я тебе ответил - для того, чтобы протащить базовый функционал в наследники. У тебя непонимание, для чего нужно наследование в ООП, или что?

hVosttэто был вопрос, который по-любому напрашивается.
Не знаю. У адекватного человека он не напрашивается - берешь и смотришь выхлоп. Ты же это сделал с такой издевкой, мол что за гавно там может сгенериться. И опять облажался, ибо там всё нормально транслируется.

hVosttя-то проверю когда мне понадобится, но ты ж рецепт выкинул.
Еще раз, ты не просто спросил, а вбросил очередной флуд в виде намека, что сгенерится гавно. Ты дурак что-ли, вообще не понимаешь о чем речь?

hVosttя попросил уточнения, а ты его оказывается не знаешь.
См. выше, это не просьба уточнить, это флудерастия, которую удалять нахрен.

hVosttзнал бы просто запостил генерируемый SQL, было бы больше пользы.
Зачем? Там обычный линейных выхлоп для and и or.

hVosttно ты будешь носом воротить «тебе надо, ты и проверяй». я уже понял что ресурс ты сделал для себя исключительно, а комменты только для приёма «спасибо», только вижу не больно-то они используются по назначению... в общем, не можешь вести ресурс, не берись. не пиарь его на каждом шагу.
1. Ресурс изначально был для меня, я об этом писал.
2. Не видишь назначения - это твои проблемы. Мне зачем твои изливания?
3. Я уж сам как-то определюсь, какой мне ресурс вести, а какой не вести, ок?
4. Я его не пиарю и тем более на каждом шагу, я даю пруф ссылки по теме.

Еще вопросы?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215901
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

я не собираюсь здесь обсуждать реализацию секьюрити, не съезжай с темы. хочешь обсудить как правильно готовить секьюрити, создавай отдельную тему, обсудим. не уходи от основного вопроса. давай мне убойный пример, такой где собственный базовый контроллер будет действительно иметь смысл.

По-моему, съезжаешь ты. Третий раз спрашиваю, не уходи от темы:

МСУкак мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?

По-моему простой вопрос - ответ будет?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215902
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

вот те родной кейс:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
		[HttpPost]
		[AllowAnonymous]
		[ValidateAntiForgeryToken]
		public ActionResult Login(LoginModel model, string returnUrl)
		{
			if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
			{
				return RedirectToLocal(returnUrl);
			}

			// If we got this far, something failed, redisplay form
			ModelState.AddModelError("", "The user name or password provided is incorrect.");
			return View(model);
		}



скажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере??
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215903
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttты привел пример, я его перебросил на фильтры.
Я тебе задал вопрос про отруливание секьюрити в UI, как будешь это делать с помощью фильтра? Нужно админу один функционал показать, менеджеру - другой, вьюверу - третий.

hVosttбез изменений в логике. и работать он будет ничуть не хуже, чем в базовом классе. плюсов от того, что это теперь фильтр на много больше. минусов ни одного нет. и это всё тот же код. абсолютно. только в фильтрах. т.е. ты назвал говнокодом, пример который сам же и привёл. ты как собака, которая кусает себя за хвост )))))))

мдааааааааааааааааа..................... умора ей богу.
Ты либо дурак, либо идиот. Выбирай.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215907
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttскажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере??
Я тебя 4-ый раз спрашиваю:
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215908
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttскажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере??
Я тебя 4-ый раз спрашиваю:

МСУкак мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?

Где ответ?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215923
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУДля каждой задачи - своя отвертка. Ты же пытаешь подо всё подогнать молоток. Это лишь говорит об отсутствии реального опыта - просто унылая кодирующая обезьянка, которая смотрит как дяди пишут. Тебе дали реальную задачу - ты начал что-то булькать невнятное. Потом ты начал плести бред, что да, базовый контроллер нужен. Теперь ты несешь бред про DI. Ты определись, чудо, больно смешно смотреть на твои рыпанья.

ну всё, если прозвучало слово «обезьянка», значит разумные аргументы кончились ))))) ты в своём репертуаре, респект!

МСУЯ тебе ответил - для того, чтобы протащить базовый функционал в наследники. У тебя непонимание, для чего нужно наследование в ООП, или что?

вот и спрашивается, зачем его туда тащить? тебе возможностей расширения из коробки мало?

МСУЕще раз, ты не просто спросил, а вбросил очередной флуд в виде намека, что сгенерится гавно. Ты дурак что-ли, вообще не понимаешь о чем речь?

так ты покажешь SQL? или ты настолько уверен в своих словах, что проверять ничего не нужно?

МСУЕще вопросы?

задето твое раздутое ЧСВ, я уже понял. остальное уже не имеет никакого значения.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215928
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну всё, если прозвучало слово «обезьянка», значит разумные аргументы кончились ))))) ты в своём репертуаре, респект!
Ты аргументы пропускаешь мимо ушей и не отвечаешь на прямые вопросы. Так что давай не будем про репертуар.


hVosttвот и спрашивается, зачем его туда тащить? тебе возможностей расширения из коробки мало?
Это абсолютно разные задачи и решаются по-разному. Наследование - никаким образом не коррелирует с задачами DI, двоешник.

hVosttтак ты покажешь SQL? или ты настолько уверен в своих словах, что проверять ничего не нужно?
Я уверен в своих словах на 100%. Тебя устраивает такой ответ?

hVosttзадето твое раздутое ЧСВ, я уже понял. остальное уже не имеет никакого значения.
Имеет - ответь на вопрос про отруливание UI в разрезе пользовательских полномочий. 5-ый раз прошу ответить.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215930
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

если надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики.

если надо ограничить доступ к действиям, например, по ролям, есть вот такая штука [Authorize(Roles = "admin,manager")] — или пишешь свой фильтр, можешь на базе стандартного или полностью свой.

еще вопросы??
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215932
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

если надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики.

если надо ограничить доступ к действиям, например, по ролям, есть вот такая штука [Authorize(Roles = "admin,manager")] — или пишешь свой фильтр, можешь на базе стандартного или полностью свой.

еще вопросы??

Какой в зад Authorize?! Ты точно инопланетянен...

Для тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215935
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

тебе никто не мешает иметь свой синглетон типа WebSecurity, доступный во всем приложении. нет смысла его тащить в контроллер. но если так уж хочется «сахара», создай Extensions для контроллера. я не понимаю, почему мы скатились до обсуждения откуда стучаться к своему Security, ты можешь его засунуть в базу, никто тебе не мешает. но необходимости в этом нет никакой абсолютно.

кроме того, всем ли контроллерам нужен этот Security? чем вот такой вариант плох:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public MyController: Controller {
   
    public MyController(ISecurityService securityService)
    {
        _securityService = securityService;
    }

}
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215937
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики
1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза?
2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред?

У тебя сложности с понимаем этого вопроса?

"как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?"
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215940
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУДля тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize?

какая хреновая архитектура, если у тебя есть такие методы. уже много лет это делается через роли. не HasUserProductEdit, а ProductEditor к примеру. и доступ к ролям юзера есть и в контроллере и во вьюхах. проверяй — нехочу. User.IsInRole() тебе в помощь юный падаван.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215941
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, тебе никто не мешает иметь свой синглетон типа WebSecurity, доступный во всем приложении.
Аааа...! А как же фильтр? А как же DI?

hVosttнет смысла его тащить в контроллер. но если так уж хочется «сахара», создай Extensions для контроллера. я не понимаю, почему мы скатились до обсуждения откуда стучаться к своему Security, ты можешь его засунуть в базу, никто тебе не мешает. но необходимости в этом нет никакой абсолютно.
1. За синглтон - сразу тебя уволить нахрен.
2. За отдельный Extensions для контроллера: вот скажи мне, ты реально дурак или прикидываешься? Security глобален для всего приложения и даже нескольких приложений, причем тут "Extensions для контроллера"? Ты не понимаешь, что несешь бред сивой кобылы?

hVosttкроме того, всем ли контроллерам нужен этот Security? чем вот такой вариант плох:
Всем. И не только контроллерам.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215944
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУ1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза?
2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред?

У тебя сложности с понимаем этого вопроса?

"как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?"

я вижу ты первый в мире кто открыл, что оказывается можно строить UI в разрезе пользовательских прав. для этого в ASP.NET все есть. еще раз, User.IsInRole() тебе в помощь. а что за этим стоит, твоя реализация или стандартная, уже by design.
...
Рейтинг: 0 / 0
25 сообщений из 128, страница 2 из 6
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [MVC] Базовый контроллер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]