Я работаю над веб-сайтом (разработанный в ASP.NET с C#), который был передан мне. Поскольку я работаю через сайт, я замечаю, что большая часть сайта имеет этот тип кода в ней:
EmailLabel.Visible = false;
WhateverButton.Visible = false;
AnotherControl.Visible = false;
...
Это все обычно делается в коде - позади сайта (в методе Page_Load). По существу это было помещено на месте для предотвращения незарегистрированного пользователя от доступа к компонентам (правило для сайта состоит в том, что незарегистрированный пользователь не должен мочь видеть любую часть сайта, пока они не входят в систему). Путь выше работ..., но кажется довольно дорогим должным быть всегда проверить, зарегистрирован ли пользователь, и затем зеркально отразите к корректному состоянию для всех тех компонентов.
Есть ли другой способ, которым можно было приблизиться к этой проблеме. Только от размышления об этом/исследовании, я думал, возможно, будет способ, которым я мог сделать перенаправление назад к домашней странице, если пользователь не зарегистрирован. Еще больше я мог расширить базовую страницу, которая сделает это для любой страницы, которая расширяет базовую страницу. Однако мое знание в этой области ограничено, таким образом, мое предложение не может работать.
Что может ТАК предложить? Что-нибудь лучше? То, что там достаточно хорошо?
Мы делаем это много на моей работе.
Как мы достижем, это путем создания класса Basepage, который наследует от System.Web.ui.wage. Затем вы переопределяете OnInit, вызовите базу.онить и добавьте код, чтобы проверить, чтобы проверить в системе пользователя. Если пользователь не вошел в систему, перенаправляйте их на страницу входа в систему (которая не наследует от basepage.)
Тогда на каждой странице, которая должна быть защищена, просто измените страницу, чтобы наследовать от basepage.
и вопреки тому, что Womp говорит выше, если вы пишете ответ. Денди (); После перенаправления он намного быстрее, что даже продолжать обработать остальную часть страницы!
Надеюсь, что поможет.
Было бы на много, много порядков дороже выполнить перенаправление, чем установить флаги Visible на ряде элементов управления.
Если на вашей странице разрешен анонимный доступ и вход в систему, то для перенаправления потребуется также разрешить анонимный доступ каким-либо другим способом, возможно, путем создания второй версии страницы.
Вопрос расходов действительно просто в стороне, но, скорее всего, это не имеет никакого значения. Чтобы ответить на ваш главный вопрос, не зная больше об архитектуре вашего приложения, я бы счел обе эти вещи нежелательными. Преимущество только установки элементов управления на Visible = false состоит в том, что ничего не визуализируется в выходном потоке для невидимых элементов управления, но они по-прежнему могут взаимодействовать с запросами сервера.
Не зная больше о требованиях вашей страницы, трудно предложить альтернативные варианты. Как уже упоминалось, LoginView может удовлетворить ваши потребности, если невидимые элементы управления вообще не участвуют с анонимными пользователями.
Существует компонент входа в систему, который представляет собой панель с анонимным видом, аутентифицированным видом и видом для конкретных ролей. Это позволяет сделать это легко.
http://www.creativeui.com/2007/10/05/net-membership-part-ii-loginview/