Текущий архив: 2003.06.19;
Скачать: CL | DM;
Вниз
Идентификация пользователя в базе MSSQL Найти похожие ветки
← →
Vick (2003-05-27 12:36) [0]Есть такая тема, может просветлит кто мои затуманенные мозги новой идеей?
Короче есть система досутпа пользователей к базе данных, т.е. таблица в которой есть поля ЮЗЕР_НЕЙМ и ПАРОЛЬ. Т.е. пользователь впускается в систему только тогда, когда юзер-нейм из како-либо записи совпадет с паролем - логично. Но при этой системе в базу можно войти под одним и тем же именем 100 раз. А мне нужно сделать так чтобы это возможно было сделать только один раз. Вариант с каким-то идентификатором входа в базу типа 0-1 не совсем надежный, т.к. юзер может отвалиться(зависнет комп, вырубиться внезапно свет и т.д.) и этот идентификатор не сброситься. ВОТ!!! Чего с этим делать не знаю...
← →
sniknik (2003-05-27 12:47) [1]делай временную таблицу куда и заноси всех подключившихся, проверять естественно придется в 2х местах. даже если все порушится и коннекты разорвутся таблица похерится сама собой, и все будет с "нуля".
← →
Polevi (2003-05-27 12:48) [2]заводишь таблицу ZZ
SPID, UserID
при логине сканируешь сист. таблицы на предмет активных @@SPID
из таблицы удаляешь всех которые не активны
далее по паролю определяешь UserID, если он есть в таблице - не пускаешь, иначе добьавляешь INSERT ZZ SELECT @@SPID, @UserID
← →
Vick (2003-05-27 12:57) [3]> sniknik © (27.05.03 12:47)
> делай временную таблицу куда и заноси всех подключившихся,
> проверять естественно придется в 2х местах. даже если все
> порушится и коннекты разорвутся таблица похерится сама собой, > и все будет с "нуля".
А если отваливается только один юзер, все ж остальные в базе сидят, то этого одного и не пустит в сисетму.
← →
Vick (2003-05-27 13:02) [4]> Polevi © (27.05.03 12:48)
> при логине сканируешь сист. таблицы на предмет активных @@SPID
> из таблицы удаляешь всех которые не активны
Есть одна фигня, процесс не всегда удаляется сразу :((((
← →
sniknik (2003-05-27 13:02) [5]Polevi © (27.05.03 12:48)
получилось бы со стандартными юзерами, MSSQL-ными
но у него > таблица в которой есть поля ЮЗЕР_НЕЙМ и ПАРОЛЬ
т.е. всю адитентификацию пытается организовать сам.
Vick © (27.05.03 12:57)
естественно, но можно еше подумать о локальных временных таблицах, типа в глобальной ссылка с реальным имннем локальной таблици отваливается один сссылка становится недействительной... но мороки конечно не оберешся.
← →
bushmen (2003-05-27 13:10) [6]sniknik © > Polevi © прав, ты же сканируешь ID процесса, а потом и всё-равно эти юзеры в SQL прописаны. Только думаю не в 2 местах, а в трёх проверять - в самой таблице пользователей.
← →
Vick (2003-05-27 13:16) [7]> bushmen © (27.05.03 13:10)
> sniknik © > Polevi © прав, ты же сканируешь ID процесса, а
> потом и всё-равно эти юзеры в SQL прописаны. Только думаю не в > 2 местах, а в трёх проверять - в самой таблице пользователей
А если все-таки сбой произойдет, то по какому событию из таблицы ZZ удалиться запись?
← →
Polevi (2003-05-27 13:20) [8]2Vick © (27.05.03 13:16)
она удалится когда очередной юзер попытается залогинится
← →
bushmen (2003-05-27 13:20) [9]Vick © >
>Polevi © (27.05.03 12:48)
>заводишь таблицу ZZ
>SPID, UserID
>при логине сканируешь сист. таблицы на предмет активных @@SPID
>из таблицы удаляешь всех которые не активны
>Vick © (27.05.03 13:02) Есть одна фигня, процесс не всегда >удаляется сразу :((((
Во всём есть свои минусы. Но это можно пережить - время, которое существует "мертвый" процесс не так велико. А алгоритм, как мне кажется, попроще остальных
← →
sniknik (2003-05-27 13:21) [10]bushmen © (27.05.03 13:10)
я ничего не сканирую, только предложил идею на неправильную реализацию (попытку)
почему не сделать так, (не пытаясь подменить систему)
коннектится для работы всегда под системными логинами а для проверки входа в систему заходить под "суперюзером" и проверять возвращаемые в процедуре sp_who логины, если есть такой то отказ от системы нет попытатся подключится под ним.
и тогда не нужна своя будет своя > таблица с ЮЗЕР_НЕЙМ и ПАРОЛЬ. а нужен только один "суперюзер" вшитый в систему (пароль хранить как зеницу ока :о)).
← →
Polevi (2003-05-27 13:24) [11]мда, тут проблема что очередной юзер получит SPID недавно отвалившегося
← →
bushmen (2003-05-27 13:25) [12]sniknik © > А если ты меняешь этого "суперюзера", то постоянно перекомпилировать exe-шник?
← →
Vick (2003-05-27 13:29) [13]> sniknik © (27.05.03 13:21)
> и тогда не нужна своя будет своя > таблица с ЮЗЕР_НЕЙМ и
> ПАРОЛЬ.
Есть фигня, эту систему придумали до меня, а я уже не могу менять.
← →
bushmen (2003-05-27 13:31) [14]>Polevi © (27.05.03 13:24)
>мда, тут проблема что очередной юзер получит SPID недавно >отвалившегося
Только у очередного юзера ЮЗЕР-НЕЙМ будет другой.
← →
sniknik (2003-05-27 13:31) [15]bushmen © (27.05.03 13:25)
-->
bushmen © (27.05.03 13:20)
> Во всём есть свои минусы...
можно не перекомпилять можно его както прятать/шифровать или даже менять в самом exe. делают же (к примеру в 1С) ввод юзера/пароля на подключение к MSSQL, делай похоже.
← →
Vick (2003-05-27 13:33) [16]> bushmen © (27.05.03 13:20)
> Во всём есть свои минусы. Но это можно пережить - время,
> которое существует "мертвый" процесс не так велико. А
> алгоритм, как мне кажется, попроще остальных
Мои бухгалтера своими кривыми клешнями умудряются так повесить своей 1С систему, что процессы нужно удалять вручную на сервере иначе они там плодяться и заваниваются :)))))
← →
Polevi (2003-05-27 13:36) [17]2bushmen © (27.05.03 13:31)
из таблицы удаляешь всех которые не активны
и где SPID=@@SPID
← →
sniknik (2003-05-27 13:36) [18]Vick © (27.05.03 13:29)
> Есть фигня, эту систему придумали до меня, а я уже не могу менять.
тогда в любом случае придется "мудрить" и хорошо не получится. выбирай вариант для тебя более подходящий, все недостатки называй фенечками или вали на предыдущих разработчиков. 8-)
Страницы: 1 вся ветка
Текущий архив: 2003.06.19;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.009 c