|
|
|
запрос типа update , есть ли понятие типа optimistic?
|
|||
|---|---|---|---|
|
#18+
Привет всем, столкнулся с небольшой задачкой при взаимодействии пользователей c базой mysql. Обычная форма HTML + jquery + etc.. Админка - PhpMyAdmin Защита вся на стороне сервера , права юзеров расписаны до уровня полей таблицы. Три поля на форме к примеру - Vasya, Kolya, Petya . Ну и роли такие же, Вася, Коля,Петя Каждый из этих пользователей имеет право обновлять только свое поле (права настроены на уровне сервера). В запрос из формы WEB (в частности UPDATE) в PHP передается значение сразу трех полей и собирается запрос для отправки на MySQL server. Точнее из модальной формы редактирования JqGrid ( но это не суть как важно). В общем от пользователя формируется запрос на обновление всех полей типа: Код: plsql 1. Если запрос поступил от Васи, то должно должно обновиться всего одно значение поля Vasya, которое примет значение равное 12ти Несмотря на то, что в остальных полях тоже что то передается (это могут быть старые значения от остальных пользователей). Решение у меня в общем то есть, но оно на стороне PHP пока только, и на стороне MySQL . Оба громоздкие в принципе. Идея 1 - проверить циклом список полей с модальной формы. Проверить дополнительно возможность обновления данного поля , если оно true, то имя поля поступает/вклеивается в текст формирующегося запроса и на выдаче поступает на сервер mysql, если false то не участвует в формировании его. Все здорово, но это же сколько обращений к серверу будет на одну операцию обновление. Идея 2 - Сделать то же самое , но на стороне сервера , при помощи триггера. А так в целом , может там есть в настройках самого сервера mysql (в частности в интерефейсе phpMyAdmin), чтобы запрос на обновление выполнялся несмотря на ограничения,и обновлял поля, которые по роли он может обновлять, а остальные игнорировал. Что то типа по аналогии ВЫБРАТЬ РАЗРЕШЕННЫЕ (как в 1С)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 01:53 |
|
||
|
запрос типа update , есть ли понятие типа optimistic?
|
|||
|---|---|---|---|
|
#18+
Сергей Лалов, а где хранится права доступа? Хорошо бы отсекать ненужно пораньше, например на форме какнибудь выставить поле неактивным и сделать так чтобы запрос в базу сразу НЕ забирал ненужные значения. следаюший вариант -- пропускать запрос через какой-нибудь "програмный модуль" чтоб вырезать ненужные поля. С тригером есть некая проблема -- ему надо передать роль. например в поле UPDATER_ROLE.... собствено тригер будет работать как вышеупомянутый "програмный модуль". На Оркле вроде такое можно настроить прозрачно но в МуСКЛе -- продется писать логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 02:27 |
|
||
|
запрос типа update , есть ли понятие типа optimistic?
|
|||
|---|---|---|---|
|
#18+
javajdbc, Все права доступа хранятся на сервере mysql, наверное в mysql.users Создаются классическим способом , по методу запретить сначала все на уровне сервера, баз в нем, таблиц в них, полей в них. А потом на отдельные конкретные таблицы и поля в них в зависимости от групп пользователей отдельно даю доступ на select,insert,update ,delete. Кроме этих четырех действий по моему мнению им остальное не нужно. Скоро и к таблицам доступ уберу ,оставлю доступ к редактируемым вьюхам. Я думал что есть на стороне mysql готовая функция , которая может проверить что то типа is_updatable на уровне таблиц полей и вернуть типа true или false на обработчик в PHP. Посмотрю, покопаюсь. Идеи костылька на php есть. Может и в самих функциях сервера подобие найду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 03:24 |
|
||
|
запрос типа update , есть ли понятие типа optimistic?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 05:03 |
|
||
|
запрос типа update , есть ли понятие типа optimistic?
|
|||
|---|---|---|---|
|
#18+
Сергей Лаловможет там есть в настройках самого сервера mysql (в частности в интерефейсе phpMyAdmin), чтобы запрос на обновление выполнялся несмотря на ограничения Отсутствие права на обновление поля при попытке его обновления приводит к ошибке. Ошибка при выполнении запроса приводит к отказу от выполнения всего запроса, ибо запрос атомарен и неделим. И то, и другое - это идеология. Так что никакими настройками проблему не решить. Сергей Лаловот пользователя формируется запрос на обновление всех полей типа: Измените формирование, чтобы формировались три запроса в одной строке: Код: sql 1. Проследите, чтобы при отправке их серверу НЕ формировалась транзакция. Тогда из них выполнятся только те запросы, на выполнение которых есть право. Ну и коннектор, само собой, должен допускать мультизапросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 09:17 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=107&tid=1832012]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 305ms |

| 0 / 0 |
