|
|
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
Не знаю как сделать... При запуске формы акцеса вводится логин и пароль, надо проверить обратится к MS SQL'ю и сверить введеные данные с логином паролем в MS SQL, и вытащить от туда права этого логина. К примеру одному можно видеть две формы в приложении, а другому только одну и он даже знать не должен что их там две... Если так не получится, то хотябы подскажите, как програмно из ВБА обратится к таблице в MS SQL и сравнить введенный логин и сохраненый в базе? у меня получается только целиком забирать все данные и уже средствами акцеса сравнивать, но так не желательно, потому что есть вероятность что одним из юзеров могут быть перехвачены пароли всех остальных пользователей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 10:18 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
Возможны два варианта: 1)А почему бы не раздать права на select на таблицы и вьюшки в SQL-сервере группам пользователям, а при вызове формы (по обычной Windows-идентификации), если возникает ошибка доступа перехватывать ее и выдавать "Вам сюда нельзя" например. Будет проще и удобнее администрировать. 2)Или на сервере сделать таблицы Forms (IDФормы int NOT NULL identity(1,1), ИмяФормы varchar(30) NOT NULL, УровеньДоступа tinyint NOT NULL default(1)) Empls (IDUser int NOT NULL identity(1,1), Login varchar(20) NOT NULL, УровеньДоступа tinyint NOT NULL default(1)) доступ из Access'а только программно, через ADODB.Connection, ADODB.Recordset. (т.е. будет работать и в ADP и в MDB) Текущий логин пользователя получаем через API-функцию. Проверка в событии Open каждой формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 10:58 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
я бы сделал табличку прав к формам в самой базе и отдал бы разрешение на селект из нее всем пользователям в этой табличке (табличках) можно хранить список доступных форм для каждого юзера при этом безпасность сервера соблюдется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:09 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
>При запуске формы акцеса вводится логин и пароль Так он сам и спросит если SQL авторизацию будеш использывать Я делаю так: Раздаю права на объекты базы ролям юзеров делаю членами ролей на Open форм ставлю проверку на членство юзера в роли например так if cnn.Execute("SELECT CAST(IS_MEMBER('KA_Admin') + IS_MEMBER('db_owner') AS Bit)").Fields(0)=1 then и лочу недоступные для юзера контролы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:11 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
2 создать для всех юзеров роли базы данных 3 назначить ролям разрешения на объекты 4 раскидать пользователей по ролям при этом пользователи не только не смогут через формы влезть куда не просят но и умники открывающие таблицы не смогут записать данные если нет прав и увидеть неположенные таблицы или столбцы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:14 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
2 Latuk прикольно, возьму на вооружение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:16 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
спасибо, сейчас попробую. роли создам. а как из акцесса проверить пренадлежность юзера роли? или MS SQL сам проверит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 15:11 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
>а как из акцесса проверить пренадлежность юзера роли? или MS SQL сам проверит? if cnn.Execute("SELECT CAST(IS_MEMBER('ИмяМоейРоли') + IS_MEMBER('db_owner') AS Bit)").Fields(0)=1 then 'член роли else 'не член роли endif Проверка IS_MEMBER('db_owner') вообщето не нужна т.к. овнер обычно и на сервере админ а для него IS_MEMBER('ИмяМоейРоли') и так будет = 1 можно еще вьюху сделать где IS_MEMBER('ИмяМоейРоли') будет вычисляемым полем и юзать уже ее готовые значения например если значение используется в условии запроса то вместо многократного вызова функции можно использовать однократно вычисленное значение из вьюхи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 15:27 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
Да еще если кто не понял Set cnn = CurrentProject.Connection cnn.Execute =>CurrentProject.Connection.Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 15:29 |
|
||
|
Авторизация в MS SQL из Access (програмно)!
|
|||
|---|---|---|---|
|
#18+
кстати для хранения и управления структурой логинов и ролей удобно сделать свою табличку и управлять ролями из формы сейчас как раз этим и занимаюсь вот фрагментик кода на установку флажка: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 16:46 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1610&tid=1673801]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 372ms |

| 0 / 0 |
