что лучший способ состоит в том, чтобы заставить некоторые страницы в asp.net потребовать входа в систему?

Поскольку я создаю собственные элементы управления,

ctrl := TSomeControl.Create(aForm);
ctrl.Parent := aForm;
ctrl.SendToBack;

можно заменить на:

ctrl := TSomeControl.Create(aForm);
aForm.InsertObject(0 {desired index}, ctrl);
6
задан Paul Dixon 25 January 2009 в 12:02
поделиться

2 ответа

Если Вы не захотите трудно кодировать это в 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: Элемент Местоположения и Элемент Авторизации.

20
ответ дан 8 December 2019 в 05:24
поделиться

Можно попробовать этот код, В загрузке ведущего устройства 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 файл.

3
ответ дан 8 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: