У меня есть код, используемый для определения того, вошел ли пользователь в систему, и я хочу поместить его на каждую страницу на веб-сайте ASP.NET, чтобы только зарегистрированные пользователи могли его просматривать. Проблема заключается в том, что сайт разбит на несколько проектов/решений, поэтому сохранение одного фрагмента кода может быть затруднено.Где проверить аутентификацию в ASP.NET
Я думал, что могу создать класс, который наследует System.Web.UI.Page
, и переопределяет Page_Init
, но для этого потребуется изменить все страницы, чтобы они наследовали новый класс. Также я не думаю, что это будет работать в разных проектах.
Итак, я подумал о приближении проблемы с другой стороны: используя АОП. Я никогда не использовал Аспекты раньше, но похоже, что я мог использовать PostSharp для написания Aspect, который вводит код перед каждым Page_Init
(или, может быть, Page_Load
?). Это может работать как быстрое решение, но я могу столкнуться с проблемами, если мне нужна страница, чтобы не выполнять проверку подлинности (доступной для всех).
Чтобы уточнить, у меня уже есть решение для входа в систему; Я просто ищу проверку, что логин на каждой странице.
Почему вы не используете ['MembershipProvider'] (http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx)? Все это сделано для вас ASP.NET. – jrummell
Как правило, страницы ASP.NET должны быть построены на главной странице, где общий код централизован, включая проверку входа. Вы можете сделать 2 мастер-страницы, которые проверяют ее, а другую - нет. – MarioDS
@ jrummell это недостаточно гибко. В реальных проектах, когда вы планируете настраивать проекты, вы не можете пойти для MembershipProvider. Правильно? – Pankaj