|
Тема |
Re: ... и в допълнение [re: VladoVasilev] |
|
Автор |
NickBass (бас-програмист) |
|
Публикувано | 15.11.05 10:12 |
|
|
>А това с правата за достъп - аз съм ги задал в самото приложение
В клиент-сървър системите сървъра за какво е? Твоето приложение е клиента, а всъщност се прави на сървър. Представи си, че имаш таблица със записи, някои от които трябва да бъдат виждани само от определени юзъри. Например - доставните цени на стоките трябва да се виждат само от някои хора, щото иначе на шефа какво ще му чуят ушите? Ако твоето приложение "администрира" достъпа на непривилегированите като генерира заявка:
SELECT
PRICE_ID, PRICE_TYPE, PRICE
FROM
ARTICLE_PRICES
WHERE
PRICE_TYPE <> 'DOSTAVNA';
то тогава тази заявка може да се пусне от всякаква SQL конзола от човек, който просто си е направил труда да прочете какво е SELECT и има ли то почво у нас... Без WHERE клаузата "секретната" информация е разкрита.
>, конкретно към NickBass- може би има по-добър вариант, директно във SQL-Servera (в случая - firebird 1.5.2)?? Какво имаш в предвид под "подходящ филтър във view-то?)
CREATE VIEW V_ARTICLE_PRICES(
PRICE_ID,
PRICE_TYPE,
PRICE)
AS
SELECT
P.PRICE_ID,
P.PRICE_TYPE,
P.PRICE)
FROM
ARTICLE_PRICES P
WHERE
(P.KEY_R IS NULL) OR
(P.KEY_R =
(
SELECT U.KEY_CODE
FROM USERKEYS U
WHERE (U.USER_NAME = CURRENT_USER) AND (U.KEY_CODE = P.KEY_R)
)
)
;
Не ти поствам цялата структура. Айде сети се сам Ако не - питай.
Редактирано от NickBass на 15.11.05 10:22.
|
| |
|
|
|