powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Какие есть механизмы ?
15 сообщений из 15, страница 1 из 1
Какие есть механизмы ?
    #39294471
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Как управлять логикой проверок, которые нужны на клиентской и серверной стороне в приложении Asp Net Mvc ?
Например нужно задизейблить кнопку по некоему условию, и в то же время и в соответствующем методе(экшене) тоже нужна проверка - чтобы не получилось вызвать его напрямую.
Есть какие-то наработки, для того, чтобы это все централизовано как-то хранилось ? Потому, что сейчас логика проверок несколько размазана. Логика есть на вьюхе (для нескольких кнопок), но она есть и в куче экшенов, соответствующих этим кнопкам. Не удобно поддерживать, т.к. нужно синхронизировать все эти проверки между собой.
PS. не предлагать переход на различные (изоморфные) технологии.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294497
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekНапример нужно задизейблить кнопку по некоему условию
По какому?
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294502
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

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

Вот эта проверка if будет и там и там. А если проверок несколько, например несколько кнопок на вьюхе, то получится на вьюхе несколько таких ifов, и еще в каждом экшене должна быть согласованная проверка. Сопровождать такое не очень удобно. Нужно будет поправить на вьюхе и не забыть зайти в экшен, ну и т.д.
Хотелось узнать, может как-то централизованно все это можно сделать. Может придумали люди что-то для большего удобства разработки-сопровождения.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294506
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekskyANA,

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

Вот эта проверка if будет и там и там. А если проверок несколько, например несколько кнопок на вьюхе, то получится на вьюхе несколько таких ifов, и еще в каждом экшене должна быть согласованная проверка. Сопровождать такое не очень удобно. Нужно будет поправить на вьюхе и не забыть зайти в экшен, ну и т.д.
Хотелось узнать, может как-то централизованно все это можно сделать. Может придумали люди что-то для большего удобства разработки-сопровождения.
И чем же это не удобно? Покажите что-ли код.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294513
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Это на вьюхе

if ( проверка)
{ 
  <a href="@Url.Action("aaaa", "bbbb")>ccc</a>                                    
}
		

это в контроллере bbbbController

public ActionResult aaaa()
begin
  if ( ! проверка)
    throw new Exception (Нет прав)
  end



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

Есть ли способ свести все это как то в одну точку ? Как то упростить поддержку что ли.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294611
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно 1 метода, который по текущему пользователю, экшену или view будет определять есть ли права.
Вызов конечно везде где надо придется натыкать руками.
Это так на вскидку, может есть что и покрасивей.

Можно еще смотреть в сторону ActionFilterAttribute
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294627
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Вы правы. С правами можно реализовать через аттрибуты.

Мой вопрос несколько шире проверки прав доступа. Я лишь привел 1 пример и написал про права доступа.
Проверки могут быть какими угодно, хоть "Не позволять удалять, если что-то там". Как я понимаю это уже в аттрибут не засунуть, т.к. слишком уж кастомная проверка.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294654
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekЕвгенийВ,

Вы правы. С правами можно реализовать через аттрибуты.

Мой вопрос несколько шире проверки прав доступа. Я лишь привел 1 пример и написал про права доступа.
Проверки могут быть какими угодно, хоть "Не позволять удалять, если что-то там". Как я понимаю это уже в аттрибут не засунуть, т.к. слишком уж кастомная проверка.
Какая нафик разница? В атрибуте все равно вызов метода, в котором можно запретить например пользователю ProBiotek задавать вопросы на sql.ru если цена нефти марки бренд меньше 100$ :)
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294662
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekКак потом поддерживать это все в синхронизированном состоянии, если учесть что на вьюхе можеть быть несколько таких проверок и соответственно нужно контролировать несколько экшенов параллельно ?
Логика размазана по вьюхе и нескольким экшенам нескольких контролеров.

Есть ли способ свести все это как то в одну точку ? Как то упростить поддержку что ли.

К примеру у нас так:

- на клиенте
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var objectAccess =  security.ObjectAccessRights,
    createAccess = objectAccess.Create & currentPage.securityMarker.accessRights,
    createHiddenPageAccess = objectAccess.CreateHiddenPage & currentPage.securityMarker.accessRights;

if (createAccess)
{
  options = [];
  options.push(
    { eventTags: 'newPage', name: resources['Button_AddNewPage'], action: onNewPageButtonClick },
    { eventTags: 'duplicatePage', name: resources['Button_DuplicatePage'], action: duplicatePage });

  if (createHiddenPageAccess)
  {
    options.push({ eventTags: 'hiddenPage', name: resources['Button_AddHiddenPage'], action: onHiddenPageButtonClick });
  }
  
  buttons.push({ id: 'btnAdd', eventTags: 'btnAdd', name: resources['Button_AddPage'], options: options, action: onNewPageButtonClick });
}



- на сервере
Код: c#
1.
2.
3.
4.
5.
[HttpPost, ValidateToken, InitApplicationHttpContext, ScriptRequestHandleError]
public ActionResult CreatePage(JsonCommand command = null, string templateId = null)
{
    // ...    
    securityService.ThrowIfHaveNoPermissions(newPage, ObjectAccessRight.Create);    



Проблем с поддержкой не испытываем.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294692
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну вот вот. я и ищу что то подобное. Чтобы не дублировать код, т.к. поддерживать и синхронизировать долго.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39294877
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekskyANA,

ну вот вот. я и ищу что то подобное. Чтобы не дублировать код, т.к. поддерживать и синхронизировать долго.
Дак перенесите эту свою проверку в единственное место, а в представлении и контроллере используйте результат вызова оного.
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39296298
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,

я так понял, вам советуют на клиенте написать js объект, который будет содержать в себе логику, сформированную на сервере, а вот процедуры формирования логики уже будут единые
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39296951
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU,

Да, возможно хороший выход.
Видимо будет некий объект у Модели передающейся на вьюху, где будет отдельный массив или список, или объект с набором булевых свойств где будет сохранен результат "расчета логики на сервере".
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39297126
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Код: javascript
1.
2.
3.
var objectAccess =  security.ObjectAccessRights,
    createAccess = objectAccess.Create & currentPage.securityMarker.accessRights,
    createHiddenPageAccess = objectAccess.CreateHiddenPage & currentPage.securityMarker.accessRights;


Проблем с поддержкой не испытываем.
Этого на клиенте никак не поменять? F12 там....
...
Рейтинг: 0 / 0
Какие есть механизмы ?
    #39297307
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANA
Код: javascript
1.
2.
3.
var objectAccess =  security.ObjectAccessRights,
    createAccess = objectAccess.Create & currentPage.securityMarker.accessRights,
    createHiddenPageAccess = objectAccess.CreateHiddenPage & currentPage.securityMarker.accessRights;


Проблем с поддержкой не испытываем.
Этого на клиенте никак не поменять? F12 там....
Мы скрипты комбайним и минифицируем. Но даже если кому-то захочется разобраться и выполнить в консоли код, создающий вожделенную кнопку, то толку с этого не будет.
Серверная проверка прав не пройдёт.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Какие есть механизмы ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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