Как проверить доступ к странице и сделать редирект при отсутствии доступа
В SQL страницы мы можем получить username пользователя. Проверить на основе него, есть ли у него доступ к объекту, определяемый через itemID (например Товар с ID=5).
Если нет доступа, то надо сделать редирект через SELECT2 redirectUrl.
Как это может выглядеть:
CREATE PROCEDURE [dbo].[pg_crumbs_blog]
@roles nvarchar(128),
@itemID nvarchar(128) = '',
@urlParameters CRUDFilterParameter READONLY
AS
BEGIN
declare @username nvarchar(max) = ( select top 1 Value from @urlParameters where [key]='username') -- username на уровне системы добавляется, а не через URL
if(.... тут некое условие, в плане есть ли доступ у @username к itemID...) begin
select 1
select '/noaccess' RedirectUrl
return
end
-- ...
END
Важно именно отдельно проверить доступ (как показано выше), а не просто установить переменную @RedirectUrl (т.е. где то SELECT 2 может быть без строк и тогда защита не сработает).
ВАЖНО! RedirectUrl никак не защищает таблицы, формы на этой странице, т.к. злоумышленник может отдельно запросить данные для таблиц/форм через прямые запросы. Поэтому проверка прав доступа должна быть реализована на всех уровнях, где выполняется действие на чтение или запись (т.е. в для формы проверка доступа должна быть и в GetItem и SaveItem).
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта