Я работаю над новым проектом asp.NET (для конкретной версии .NET 4.5). Я пытаюсь создать этот проект, используя лучшие практики, но, к сожалению, я не знаю терминологию, чтобы искать в этом случае - надеюсь, этот вопрос даст понять.Ссылка 'this' на главной странице
После создания нового проекта из шаблона по умолчанию я получаю страницы, необходимые для системы входа в систему. Теперь я хочу сделать так, чтобы весь сайт требовал входа в систему, прежде чем вам разрешат увидеть какой-либо контент. Для этого я просто проверяю, зарегистрирован ли ваш пользователь на загрузке страницы, а если нет, перенаправляйте вас на страницу входа.
Вот что у меня есть до сих пор - он отлично работает, но не является «глобальным».
На отдельной странице:
protected void Page_Load(object sender, EventArgs e)
{
//If the user isn't logged in, make them log in
redirectIfNotLoggedIn(this);
}
public static void redirectIfNotLoggedIn(_Default _Default)
{
if (!_Default.User.Identity.IsAuthenticated) { _Default.Response.Redirect("~/Account/Login.aspx"); }
}
Он работает - если я не вошли в систему, это приводит меня к странице Login.aspx. Если я вошел в систему, я могу перемещаться по сайту. Проблема с этим кодом заключается в том, что мне придется копировать и вставлять его на каждую страницу. Поэтому я хотел бы поместить этот код в Page_Load файла Site.Master, который заставит пользователя пройти аутентификацию независимо от того, на какой странице они пытаются получить доступ. Однако я не могу использовать «этот» контекст в Site.Master, что имеет смысл, но я не знаю, что такое альтернатива.
Я собираюсь сделать это правильно? Есть ли способ лучше? Как я могу сделать требование аутентификации «глобальным» для каждой страницы проекта?
Вы можете взглянуть на https://msdn.microsoft.com/en-us/library/gg416513%28VS.98% 29.aspx? F = 255 & MSPPError = -2147217396 и, в частности, фильтры авторизации. – Chris
Почему вы не можете использовать 'this' в главном файле? – DavidG
@ Крис Я сейчас читаю страницы, что именно я должен искать? Где бы я поместил такой фильтр? – Jake