Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с запросом  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
В базе есть поле "access" таблицы DocumentsList

Для авторизации пользователей на сайте использую стандартный Membership

Вот sql запрос на выборку документов (пример)

SELECT [name_doc], [type_doc], [access], [text] FROM DocumentsList WHERE [name_doc] like %textbox1.text% AND [access] IN ('public', userole)

public -общедоступные документы
userole - документы доступны только для определенной роли к которой относится пользователь

Так вот проблем не возникает если у пользователя есть одна роль а если он относится к 2 и более ролям(например: security, accountant) то как решить проблему [access] IN ('public', userole) что бы ему отображались документы?

В поле "access" записывается или public или роль(група) доступа.

Задавал этот вопрос на ветке ASP но ответа не нашел и вот решил у вас спросить может поможете.

Спасибо
9 апр 12, 13:19    [12387207]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
VIT2708
userole - документы доступны только для определенной роли к которой относится пользователь

Так вот проблем не возникает если у пользователя есть одна роль а если он относится к 2 и более ролям(например: security, accountant) то как решить проблему [access] IN ('public', userole) что бы ему отображались документы?

Так userole здесь у вас что есть то ? Константа ? Параметер ?
Что значит "у пользователя есть роли" ? Где хранится этот список ролей ?
9 апр 12, 13:43    [12387386]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Glory,

userole - это параметр

При использовании Membership пользователю добавляются роли то есть пользователь вносится в несколько групп доступа - админ, бухгалтер и т д

База создается автоматически в Visual Studio
Вот таблицы
......
aspnet_Roles
aspnet_users
aspnet_UsersInRoles
.....


aspnet_Roles - здесь хранятся роли (группы доступа)
поля:
AplicationID
RoleID
RoleName
.......
9 апр 12, 14:12    [12387543]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
VIT2708
userole - это параметр

И кто формирует значение этого параметра ? По какому принципу формирует ?

VIT2708
при использовании Membership пользователю добавляются роли то есть пользователь вносится в несколько групп доступа - админ, бухгалтер и т д
База создается автоматически в Visual Studio
Вот таблицы
......
aspnet_Roles
aspnet_users
aspnet_UsersInRoles

Почему тогда в запросе какой то параметер, а не обращение к этим таблицам ?
9 апр 12, 14:15    [12387557]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Glory,

когда пользователь авторизируется на сайте то я ему даю доступ к определенным контролам на странице.
В Membership есть функция GetRolesForUser - используя эту функцию можна получить список ролей пользователя. Так вот я не знаю как правильно прикрутить этот список в свой запрос.

Например пользователь есть Виталик, он входит в такие групы: Админ, Бухгалтер, Менеджер - при чем список ролей периодически может менятся

Вот мой запрос

SELECT [name_doc], [type_doc], [access], [text] FROM DocumentsList WHERE [name_doc] like %textbox1.text% AND [access] IN ('public', userole)

userole - я не знаю как использовать здесь этот список
9 апр 12, 14:31    [12387755]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
VIT2708
userole - я не знаю как использовать здесь этот список

Какой "этот список" ?
Вы что не можете написать подзапрос к таблице aspnet_UsersInRoles для проверки, есть ли в списке ролей пользователя значение из поля [access] ?
9 апр 12, 14:35    [12387801]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Glory,

могу, но я про эту таблицу с ролями как то забыл

Ну вообщем спасибо что направили на путь истины
9 апр 12, 14:53    [12387995]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить