AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2009, 13:55   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,286 / 3494 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Навеяло этой темой. Решил выложить модификацию сей утилиты (да простят меня ее авторы, что я ее немного переработал)
Исходная версия утилиты работала следующим образом:
1. Подменялся SID у нужного пользователя
2. Запускалась новая Аксапта с параметром /WAIT, т.е. исходное приложение ожидало завершение нового приложения
3. SID менялся обратно.

У данного алгоритма есть 2 существеных недостатка.
1. Если что-то где-то как-то сбойнет и исходное приложение вылетит до завершения нового, то потом придется ручками в БД возвращать на место SIDы
2. Как показала практика - не стоит трогать SID у пользователя Admin, т.к. это может привести к результатам из п.1

Ну и конечно - хочется чтобы была одна кнопка на стандартной форме пользователей.

В связи с этим - алгоритм изменился на следующий:
1. Идет проверка на запрет запуска утилиты из под Admin-а и от имени Admin-а
2. Подменяется SID у тестируемого пользователя (как было)
3. Если Аксапта запускалась через конфигурационный файл (в командной строке был указан axc-шник) - то новая Аксапта запускается с этим же конфигурационным файлом. Если конфигурационного файла не было - то Аксапта запускается с тем же портом, что и исходная, но в usr-слое и другими параметрами по умолчанию. Аксапта запускается без параметра WAIT, т.е. исходное приложение не ожидает завершения нового.
4. После запуска новой Аксапты исходная система "ловит" новую запись этого SIDа, сделанную в таблице SysClientSessions. В процессе "ловли" она ждет 10 секунд появления этой записи. Если не дожидается - то выдает запрос - "Подождать/Отменить?", после чего либо снова ждет, либо возвращает SIDы на место. В любом случае - либо после отмены в запросе, либо после перехвата записи - исходный SID возвращается на место.

Таким образом, получается, что таблица UserInfo несет в себе некорректные записи только на этапе запуска второй Аксапты и последовательно можно запустить несколько Аксапт под разными пользователями. Пользователь, под которым запущена вторая Аксапта может быть и отключен после запуска - это никак не влияет на его работоспособность (все проверяется только при запуске).
Поэтому, считаю, что модификация данной утилиты сделает ее более безопасной в использовании.

Ну и конечно все вынесено в отдельную кнопку, которая вешается на стандартную форму SysUserInfo (\Администрирование\Пользователи).
Вложения
Тип файла: zip SysRunAsAxInstance.zip (8.7 Кб, 301 просмотров)
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: raz (10), Pustik (3), Logger (2).
Старый 30.03.2012, 18:51   #2  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Навеяло этой темой. Решил выложить модификацию сей утилиты (да простят меня ее авторы, что я ее немного переработал)
Исходная версия утилиты работала следующим образом:
1. Подменялся SID у нужного пользователя
2. Запускалась новая Аксапта с параметром /WAIT, т.е. исходное приложение ожидало завершение нового приложения
3. SID менялся обратно.

У данного алгоритма есть 2 существеных недостатка.
1. Если что-то где-то как-то сбойнет и исходное приложение вылетит до завершения нового, то потом придется ручками в БД возвращать на место SIDы
2. Как показала практика - не стоит трогать SID у пользователя Admin, т.к. это может привести к результатам из п.1

Ну и конечно - хочется чтобы была одна кнопка на стандартной форме пользователей.

В связи с этим - алгоритм изменился на следующий:
1. Идет проверка на запрет запуска утилиты из под Admin-а и от имени Admin-а
2. Подменяется SID у тестируемого пользователя (как было)
3. Если Аксапта запускалась через конфигурационный файл (в командной строке был указан axc-шник) - то новая Аксапта запускается с этим же конфигурационным файлом. Если конфигурационного файла не было - то Аксапта запускается с тем же портом, что и исходная, но в usr-слое и другими параметрами по умолчанию. Аксапта запускается без параметра WAIT, т.е. исходное приложение не ожидает завершения нового.
4. После запуска новой Аксапты исходная система "ловит" новую запись этого SIDа, сделанную в таблице SysClientSessions. В процессе "ловли" она ждет 10 секунд появления этой записи. Если не дожидается - то выдает запрос - "Подождать/Отменить?", после чего либо снова ждет, либо возвращает SIDы на место. В любом случае - либо после отмены в запросе, либо после перехвата записи - исходный SID возвращается на место.

Таким образом, получается, что таблица UserInfo несет в себе некорректные записи только на этапе запуска второй Аксапты и последовательно можно запустить несколько Аксапт под разными пользователями. Пользователь, под которым запущена вторая Аксапта может быть и отключен после запуска - это никак не влияет на его работоспособность (все проверяется только при запуске).
Поэтому, считаю, что модификация данной утилиты сделает ее более безопасной в использовании.

Ну и конечно все вынесено в отдельную кнопку, которая вешается на стандартную форму SysUserInfo (\Администрирование\Пользователи).
Спасибо!
Обновил для 2009 версии. Тестировалось на SP1 RU7.
Вложения
Тип файла: xpo SharedProject_DEV_RunAs.xpo (69.2 Кб, 686 просмотров)
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: coolibin (2), propeller (1).
Старый 25.12.2012, 10:06   #3  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Перенес проект на AX 2012
Тот же самый проект, перенесенный на AX 2012.
Вложения
Тип файла: xpo SharedProject_DEV_RunAs_AX2012.xpo (88.5 Кб, 493 просмотров)
За это сообщение автора поблагодарили: Logger (3).
Старый 19.11.2014, 16:13   #4  
Oz is offline
Oz
Участник
Аватар для Oz
 
293 / 51 (2) ++++
Регистрация: 22.08.2002
Адрес: Москва
Цитата:
Сообщение от kalex Посмотреть сообщение
Тот же самый проект, перенесенный на AX 2012.
Коллеги! А есть ли у кого-нибудь положительный опыт использования это утилиты на DAX 2012?
Как я вижу, сессия под другим пользователем запускается. Однако, так как непосредственно после её старта запускающая сессия должна возвращать SID'ы пользователей на место, запущенная сессия оказывается нежизнеспособна - любые попытки что то открыть на ней приводят к немедленному падению.
Удалось ли кому-нибудь побороть этот эффект и таки воспользоваться этой полезной фичей?
__________________
Здесь могла быть Ваша реклама!
За это сообщение автора поблагодарили: Logger (1).
Теги
rls, run as, тестирование прав, права доступа, ax2009, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Организация доступа внешних веб-пользователей к DAX 4.0 alex55 DAX: Администрирование 1 07.06.2009 17:48
aEremenko: Тестирование производительности в DAX 4.0 Blog bot DAX Blogs 0 12.03.2008 16:05
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
После установки прав на группу пользователей в 3-уровневой, просматриваю еще раз..... Сергей Щербак DAX: Администрирование 3 09.04.2004 16:56
Проблема при настройке прав пользователей на функциональные ключи? Мирослав DAX: Администрирование 1 17.07.2002 15:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.