Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Авторизация в MS SQL из Access (програмно)! / 10 сообщений из 10, страница 1 из 1
16.06.2004, 10:18:49
    #32562931
Remblyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
Не знаю как сделать... При запуске формы акцеса вводится логин и пароль, надо проверить обратится к MS SQL'ю и сверить введеные данные с логином паролем в MS SQL, и вытащить от туда права этого логина.
К примеру одному можно видеть две формы в приложении, а другому только одну и он даже знать не должен что их там две...

Если так не получится, то хотябы подскажите, как програмно из ВБА обратится к таблице в MS SQL и сравнить введенный логин и сохраненый в базе? у меня получается только целиком забирать все данные и уже средствами акцеса сравнивать, но так не желательно, потому что есть вероятность что одним из юзеров могут быть перехвачены пароли всех остальных пользователей...
...
Рейтинг: 0 / 0
16.06.2004, 10:58:43
    #32563041
neal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
Возможны два варианта:

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 каждой формы.
...
Рейтинг: 0 / 0
16.06.2004, 11:09:59
    #32563084
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
я бы сделал табличку прав к формам в самой базе и отдал бы разрешение на селект из нее всем пользователям

в этой табличке (табличках) можно хранить список доступных форм для каждого юзера

при этом безпасность сервера соблюдется.
...
Рейтинг: 0 / 0
16.06.2004, 11:11:14
    #32563091
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
>При запуске формы акцеса вводится логин и пароль
Так он сам и спросит если SQL авторизацию будеш использывать

Я делаю так:
Раздаю права на объекты базы ролям
юзеров делаю членами ролей
на Open форм ставлю проверку на членство юзера в роли
например так
if cnn.Execute("SELECT CAST(IS_MEMBER('KA_Admin') + IS_MEMBER('db_owner') AS Bit)").Fields(0)=1 then

и лочу недоступные для юзера контролы.
...
Рейтинг: 0 / 0
16.06.2004, 11:14:34
    #32563104
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
2 создать для всех юзеров роли базы данных
3 назначить ролям разрешения на объекты
4 раскидать пользователей по ролям

при этом пользователи не только не смогут через формы влезть куда не просят
но и умники открывающие таблицы не смогут записать данные если нет прав
и увидеть неположенные таблицы или столбцы
...
Рейтинг: 0 / 0
16.06.2004, 11:16:17
    #32563112
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
2 Latuk
прикольно, возьму на вооружение
...
Рейтинг: 0 / 0
16.06.2004, 15:11:26
    #32563786
Remblyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
спасибо, сейчас попробую. роли создам.
а как из акцесса проверить пренадлежность юзера роли? или MS SQL сам проверит?
...
Рейтинг: 0 / 0
16.06.2004, 15:27:03
    #32563851
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
>а как из акцесса проверить пренадлежность юзера роли? или 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('ИмяМоейРоли') будет вычисляемым полем
и юзать уже ее готовые значения
например если значение используется в условии запроса
то вместо многократного вызова функции
можно использовать однократно вычисленное значение из вьюхи.
...
Рейтинг: 0 / 0
16.06.2004, 15:29:48
    #32563861
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
Да еще если кто не понял
Set cnn = CurrentProject.Connection

cnn.Execute =>CurrentProject.Connection.Execute
...
Рейтинг: 0 / 0
16.06.2004, 16:46:22
    #32564111
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Авторизация в MS SQL из Access (програмно)!
кстати для хранения и управления структурой логинов и ролей

удобно сделать свою табличку и управлять ролями из формы

сейчас как раз этим и занимаюсь

вот фрагментик кода на установку флажка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
cnn.Open CurrentProject.Connection.ConnectionString
cnn.Execute "exec sp_addlogin  @loginame = '" & Me.id_sotr & "' ,  @passwd =  '" & Me.pass & "'  ,  @defdb =  'finplansql'    ,  @deflanguage =  'russian'"

cnn.Execute "USE finctrl    exec sp_grantdbaccess N'" & Me.id_sotr & "', N'" & Me.id_sotr & "'"

cnn.Execute "USE finplanSql exec sp_grantdbaccess N'" & Me.id_sotr & "', N'" & Me.id_sotr & "'"
cnn.Execute "USE finplanSql EXEC sp_addrolemember N'PartnersAndCurators', N'" & Me.id_sotr & "'"

cnn.Execute "USE ts2 exec sp_grantdbaccess N'" & Me.id_sotr & "', N'" & Me.id_sotr & "'"
cnn.Execute "USE ts2 EXEC sp_addrolemember N'PartnersAndCurators', N'" & Me.id_sotr & "'"
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Авторизация в MS SQL из Access (програмно)! / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]