Как проверить доступ к странице и сделать редирект при отсутствии доступа

В 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).

Страница-источник на сайте falconspace.ru