Сокрытие средств управления как форма безопасности в Интернете, предложений для лучше?

Я работаю над веб-сайтом (разработанный в ASP.NET с C#), который был передан мне. Поскольку я работаю через сайт, я замечаю, что большая часть сайта имеет этот тип кода в ней:

EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...

Это все обычно делается в коде - позади сайта (в методе Page_Load). По существу это было помещено на месте для предотвращения незарегистрированного пользователя от доступа к компонентам (правило для сайта состоит в том, что незарегистрированный пользователь не должен мочь видеть любую часть сайта, пока они не входят в систему). Путь выше работ..., но кажется довольно дорогим должным быть всегда проверить, зарегистрирован ли пользователь, и затем зеркально отразите к корректному состоянию для всех тех компонентов.

Есть ли другой способ, которым можно было приблизиться к этой проблеме. Только от размышления об этом/исследовании, я думал, возможно, будет способ, которым я мог сделать перенаправление назад к домашней странице, если пользователь не зарегистрирован. Еще больше я мог расширить базовую страницу, которая сделает это для любой страницы, которая расширяет базовую страницу. Однако мое знание в этой области ограничено, таким образом, мое предложение не может работать.

Что может ТАК предложить? Что-нибудь лучше? То, что там достаточно хорошо?

7
задан JasCav 18 January 2010 в 17:16
поделиться

3 ответа

Мы делаем это много на моей работе.

Как мы достижем, это путем создания класса Basepage, который наследует от System.Web.ui.wage. Затем вы переопределяете OnInit, вызовите базу.онить и добавьте код, чтобы проверить, чтобы проверить в системе пользователя. Если пользователь не вошел в систему, перенаправляйте их на страницу входа в систему (которая не наследует от basepage.)

Тогда на каждой странице, которая должна быть защищена, просто измените страницу, чтобы наследовать от basepage.

и вопреки тому, что Womp говорит выше, если вы пишете ответ. Денди (); После перенаправления он намного быстрее, что даже продолжать обработать остальную часть страницы!

Надеюсь, что поможет.

2
ответ дан 7 December 2019 в 14:33
поделиться

Было бы на много, много порядков дороже выполнить перенаправление, чем установить флаги Visible на ряде элементов управления.

Если на вашей странице разрешен анонимный доступ и вход в систему, то для перенаправления потребуется также разрешить анонимный доступ каким-либо другим способом, возможно, путем создания второй версии страницы.

Вопрос расходов действительно просто в стороне, но, скорее всего, это не имеет никакого значения. Чтобы ответить на ваш главный вопрос, не зная больше об архитектуре вашего приложения, я бы счел обе эти вещи нежелательными. Преимущество только установки элементов управления на Visible = false состоит в том, что ничего не визуализируется в выходном потоке для невидимых элементов управления, но они по-прежнему могут взаимодействовать с запросами сервера.

Не зная больше о требованиях вашей страницы, трудно предложить альтернативные варианты. Как уже упоминалось, LoginView может удовлетворить ваши потребности, если невидимые элементы управления вообще не участвуют с анонимными пользователями.

1
ответ дан 7 December 2019 в 14:33
поделиться

Существует компонент входа в систему, который представляет собой панель с анонимным видом, аутентифицированным видом и видом для конкретных ролей. Это позволяет сделать это легко.

http://www.creativeui.com/2007/10/05/net-membership-part-ii-loginview/

1
ответ дан 7 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: