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

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

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

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

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

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

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

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

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

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

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

вот фрагментик кода на установку флажка:
Код: 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
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Авторизация в MS SQL из Access (програмно)!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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