ASP.NET page' chargement de la Page ' Déclenchement avant L'événement 'chargement de la page' de la page principale?

Sur ma page maître, j'ai une petite méthode dans l'événement Page_Load qui vérifie si un utilisateur est connecté, et les redirige vers la page de connexion sinon.

Le problème est que pour certaines de mes pages, les événements Page_Load supposent qu'un utilisateur connecté est connecté, et ces événements semblent se déclencher avant la vérification de connexion dans la page principale, ce qui provoque des erreurs.

Quels sont les moyens de contourner cela? Tous les événements que je peux utiliser autres que Page_Load dans mes pages, qui déclencheront après le maître la page?

23
demandé sur James Wiseman 2011-04-08 14:14:28

3 réponses

Vous avez un cycle de pages riche avec beaucoup d'événements à utiliser. Peut-être pourriez-vous utiliser Page_Init pour vérifier si l'utilisateur est connecté dans la page principale. Ou utilisez Page_PreRender dans les autres pages.

25
répondu Alessandro 2011-04-08 10:19:10

Si vous avez besoin que des choses se produisent dans la page masterpage Page_Load avant les événements de la page, utilisez le Page_PreRender

protected void Page_PreRender(object sender, EventArgs e)

Dans la page réelle.

2
répondu Wes Grant 2011-04-08 10:23:00

Vous allez avoir à vérifier si l'utilisateur est connecté pour ces caractéristiques, en faisant: if (this.Page.User.Identity.IsAuthenticated == true) { .. }. Rien ne peut être supposé, ce qui est ce que vous vivez. Vous pouvez également déplacer votre vérification de connexion vers Page_Init, ou même le déplacer vers un module HTTP qui s'exécute à chaque chargement de page; là, vous avez accès à un large éventail d'événements, y compris l'Authentification/autorisation de l'application.

Si vous utilisez l'authentification forms, vous pouvez utiliser le fichier de configuration pour le piloter à la place, via élément d'autorisation.

<system.web>
  <authorization>
    <deny users="?" />
    <allow users="*" />
  </authorization>
</system.web>
<location path="login.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

HTH.

1
répondu Brian Mains 2011-04-08 10:59:26