Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Системы авторизации (число прочтений - 7132 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Системы авторизации
07. Декабря 2006 :: 11:22
Печать  
Есть желание заменить стандартную авторизацию с вводом пароля при входе на другую, выполняемую без выхода из системы 1С:Предприятие.

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

Первое, что пришло в голову - хеширование введенного имени и пароля и сравнение с имеющимся у пользователя на какой-нибудь флешке хешем.
Соответственно, отказ в операциях при несовпадении.
При совпадении - загрузка интерфейса и прав (не знаю, сделает это Robert или нет, пока это идея).

Вопрос: может кто-нибудь уже решал это дело, eTokenы какие-нибудь или еще что.
Было бы интересно.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Системы авторизации
Ответ #1 - 07. Декабря 2006 :: 11:59
Печать  
Короче, примерно понятно.

Мне, видимо, сойдут самые простые iButtonы с памятью на 256 бит и считыватель к USB порту.
Нужно только для них драйвер или сделать или найти или купить у 1ab, если у них есть.

Который события при подключении будет генерить и память читать.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #2 - 07. Декабря 2006 :: 12:05
Печать  
Есть возможность в 1С вызвать событие при подключении обычной флешки.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #3 - 07. Декабря 2006 :: 12:10
Печать  
написать в глобальнике что-то типа такого
Код
Выбрать все
Перем ОбработчикСобытий;

Процедура ПриОткрытии()
	ОбработчикСобытий=СоздатьОбъект("Addin.EventProxy");
	ОбработчикСобытий.ГлубинаБуфераСобытий=200;
	Обработчик=СоздатьОбъект("WbemScripting.SWbemSink");
	ОбработчикСобытий.Источник(Обработчик,"WbemScripting.SWbemSink","WMISink");
	objWMIServices.ExecNotificationQueryAsync(Обработчик,
	"SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_DiskDrive'");
КонецПроцедуры	// ПриОткрытии

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
	Если (Источник="WMISink") и (Событие="OnObjectReady") Тогда
		Д=ЗначениеИзСтрокиВнутр(Данные);
		WMIObj=ОбработчикСобытий.ПолучитьОбъект(Д.ПолучитьЗначение(1));
		Drive=WMIObj.TargetInstance;
		//тут надо перебрать логические диски и определить
		//какой логический диск соответствует подключенному диску
		//считать с флешки хеш и т.д.
	КонецЕсли;
КонецПроцедуры	// ОбработкаВнешнегоСобытия 

  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #4 - 07. Декабря 2006 :: 12:16
Печать  
Можно даже проще Улыбка
Код
Выбрать все
Процедура ПриОткрытии()
	ОбработчикСобытий=СоздатьОбъект("Addin.EventProxy");
	ОбработчикСобытий.ГлубинаБуфераСобытий=200;
	Обработчик=СоздатьОбъект("WbemScripting.SWbemSink");
	ОбработчикСобытий.Источник(Обработчик,"WbemScripting.SWbemSink","WMISink");
	objWMIServices.ExecNotificationQueryAsync(Обработчик,
	"SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_LogicalDisk'");
КонецПроцедуры	// ПриОткрытии

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
	Если (Источник="WMISink") и (Событие="OnObjectReady") Тогда
		Д=ЗначениеИзСтрокиВнутр(Данные);
		WMIObj=ОбработчикСобытий.ПолучитьОбъект(Д.ПолучитьЗначение(1));
		Disk=WMIObj.TargetInstance;
		Сообщить(Disk.Name);//тут будет буква диска (типа f:)
	КонецЕсли;
КонецПроцедуры	// ОбработкаВнешнегоСобытия 

  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Системы авторизации
Ответ #5 - 07. Декабря 2006 :: 12:38
Печать  
А objWMIServices как задается?

Если так:
Цитата:
personate}!\\.\root\default");

то получается ошибка:

Цитата:
objWMIServices.ExecNotificationQueryAsync(Обработчик, "SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_LogicalDisk'");
{Y:\100.ERT(10)}: SWbemServicesEx: Invalid class
  

De quelle planète es-tu?
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #6 - 07. Декабря 2006 :: 12:50
Печать  
kms писал(а) 07. Декабря 2006 :: 12:38:
А objWMIServices как задается?

Код
Выбрать все
personate}!\\.\root\CIMV2"); 

  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Системы авторизации
Ответ #7 - 07. Декабря 2006 :: 12:58
Печать  
Работает.

Во всяком случае, дискету теперь пытается читать каждые 6 секунд Улыбка

Но у меня проблемка - не вызывается внешнее событие.
И в твоем примере по отслеживанию изменений реестра - тоже не вызывается.

Может, чего-то не хватает? (xp sp2)
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Системы авторизации
Ответ #8 - 07. Декабря 2006 :: 13:13
Печать  
+
На самом деле и событие работает, но только первый раз, потом перестает.
Есть какие-то тонкости, наверное.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #9 - 07. Декабря 2006 :: 13:21
Печать  
kms писал(а) 07. Декабря 2006 :: 12:58:
Работает.

Во всяком случае, дискету теперь пытается читать каждые 6 секунд Улыбка

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

kms писал(а) 07. Декабря 2006 :: 12:58:
Но у меня проблемка - не вызывается внешнее событие.
И в твоем примере по отслеживанию изменений реестра - тоже не вызывается.

Может, чего-то не хватает? (xp sp2)

Икс его знает... Озадачен
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Системы авторизации
Ответ #10 - 07. Декабря 2006 :: 13:29
Печать  
Это все мелочи. А за идею спасибо. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Системы авторизации
Ответ #11 - 07. Декабря 2006 :: 14:23
Печать  
Для некотрых моделей сканеров ШК надо писать такой код:
Код
Выбрать все
	Сканер=СоздатьОбъект("AddIn.Scanner");
	Сканер.ПосылкаДанных = 1; 


Иначе ОбработкаВнешнегоСобытия() следующий раз не возникает. Может тут что-то подобное?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #12 - 07. Декабря 2006 :: 14:58
Печать  
sedmin писал(а) 07. Декабря 2006 :: 14:23:
Для некотрых моделей сканеров ШК

смею заметить, что это касается не неких моделей сканеров, а неких реализаций неких компонент
  

1&&2&&3
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Системы авторизации
Ответ #13 - 07. Декабря 2006 :: 15:06
Печать  
Ну мы же поняли друг друга.  Очень довольный
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Системы авторизации
Ответ #14 - 07. Декабря 2006 :: 15:09
Печать  
канечно, о чем речь  Подмигивание
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать