Зарегистрируйтесь перед входом на основной сайт - PullRequest
2 голосов
/ 18 февраля 2012

Когда кто-то посещает мой сайт и если администратор не зарегистрирован, его следует перенаправить на эту страницу регистрации администратора. Теперь это должно происходить ТОЛЬКО, когда не зарегистрировано ни одного администратора. Так должно происходить только тогда, когда база данных свежая и пустая без данных.

Я знаю, что могу поставить проверку с атрибутом проверки на всех контроллерах. Но я нахожу это немного хаком и хорошо ... Проверка должна быть полностью удалена, если в любом случае есть 1 зарегистрированный. Так есть ли другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Лучший способ сделать это с глобальным фильтром . Вы регистрируете его один раз в своем приложении, и каждое выполняемое действие сначала попадает в фильтр. Все, что вам нужно сделать, это добавить его в глобальную коллекцию фильтров на Application_Start:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    GlobalFilters.Filters.Add(new AdminRequiredAttribute());

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}
1 голос
/ 18 февраля 2012

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

Редактировать

Вы можете сохранить глобальную переменную в файле web.config, скажем, AdminIsRegistered, для которой установлено значение false при первой доставке приложения. Затем вы изменяете это значение программно, когда первый администратор регистрирует как этот , и устанавливаете его на true. Затем пользовательский атрибут, установленный на базовом контроллере, может просто проверять это значение при каждом запросе, если для него установлено значение false, атрибут перенаправляет пользователя на действие регистрации, в противном случае он ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...