Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

Идентификация пользователя в базе 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
14-60318
Soft
2003-06-02 20:54
2003.06.19
Linux: истоки новой философии программирования


1-60256
agentru
2003-06-05 18:45
2003.06.19
Как сделать в Винде папку невидимой (програмно)?


14-60417
Gobul
2003-06-02 13:38
2003.06.19
Глючит пиратская дельфя


14-60339
Udjin
2003-05-31 00:18
2003.06.19
13 билет на экзамене


3-60065
sony1
2003-05-28 13:08
2003.06.19
Как выбрать из view первые 100 записей например ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский