Поскольку я создаю собственные элементы управления,
ctrl := TSomeControl.Create(aForm);
ctrl.Parent := aForm;
ctrl.SendToBack;
можно заменить на:
ctrl := TSomeControl.Create(aForm);
aForm.InsertObject(0 {desired index}, ctrl);
Если Вы не захотите трудно кодировать это в web.config (s), то необходимо будет реализовать управление типом "Базовой страницы".
Ваш класс базовой страницы должен наследоваться Системе. Сеть. UI.Page, и должен был бы иметь метод, который Вы могли назвать, чтобы сказать, что "Пользователь должен быть зарегистрирован", или "Пользователь должен быть в роли x", и если пользователь не находится в той роли, перенаправлении к странице входа в систему (можно получить это путем вызова FormsAuthentication. LoginUrl).
Ваши фактические страницы должны наследоваться этому классу, а не Системе. Сеть. UI.Page непосредственно. Затем в чем-то как Init, или наверху Page_Load, вызова
base.UserMustBeLoggedIn();
или
// Replace "AccessRole" with the name of your role
base.UserMustBeInRole("AccessRole");
И позвольте базовой странице обработать это.
Если Вам сохранили бы права доступа в базе данных, то Вы могли переместить всю обработку в базовую страницу, и в подходящем месте в жизненный цикл страницы, проверьте текущий URL по своей таблице базы данных, проверьте пользовательскую роль/аутентификацию по требованиям и перенаправлению как требуется.
Обратите внимание, что можно создать безопасность уровня страницы в веб-конфигурации как так:
<configuration>
<location path="LockedPage.aspx">
<system.web>
<authorization>
<!-- Deny access to anonymous users -->
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>
Больше информации доступно на MSDN: Элемент Местоположения и Элемент Авторизации.
Можно попробовать этот код, В загрузке ведущего устройства Page событие пишет этот код, добавляет свойство
общедоступный bool m_bLoginRequired = верный;
public bool IsLoginRequired
{
get { return m_bLoginRequired; }
set { m_bLoginRequired = value; }
}
try
{
// Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
Response.Cache.SetNoStore();
if (IsLoginRequired==true)
{
if ( Session.IsNewSession || HttpContext.Current.Session["Username"] == null)
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage("Session Expired");
Response.End();
}
}
}
catch (Exception ex)
{
throw (ex);
}
теперь в Странице входа в систему необходимо написать этот код
FormsAuthentication.SetAuthCookie(this.txt_UserName.Text.Trim(), false); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, this.txt_UserName.Text.Trim(), DateTime.Now, DateTime.Now.AddMinutes(10), false, "HR");
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
cookie.Name = "jay";
Session["UserName"] = txt_UserName.Text.Trim();
Response.Cookies.Add(cookie);
txt_UserName.Text = "";
txt_Password.Text = "";
Response.Redirect("HomePage2.aspx");
теперь Вы авеню для добавления pageinit события в странице входа в систему
protected void Page_PreInit(object sender, EventArgs e)
{
Master.IsLoginRequired = false;
}
если Вы хотите это, пользователь может получить доступ к авторизованной странице ООН затем в pageinit событии той страницы
установите Master.IsLoginRequired=false;
также укажите loginurl в web.config
файл.