IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Création d'une fonction/classe qui doit fermer la fenêtre si la variable session est vide


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Points : 128
    Points
    128
    Par défaut [C#] Création d'une fonction/classe qui doit fermer la fenêtre si la variable session est vide
    Bonjour,

    J'essaie de créer une classe/fonction que je peux appeler dans toute les pages du projet.

    Cette fonction vérifie si l'utilisateur s'est logué, et s'il ne s'est pas logué la fonction doit fermer immédiatement la page où il se trouve.

    Cependant j'ai eu beau rechercher des méthodes pour fermer la page (Webform) en cours, aucune des méthodes que j'inscris ne sont reconnu....

    Pouvez vous m'aider à créer cette classe/fonction ? (Mais aussi m'indiquer quand quel type de fichier je dois le mettre afin qu'elle puisse être appelée dans toute les pages du projets ?)

    Voici mon essai, pas très concluant, que j'ai créer dans un fichier classe......

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Text.RegularExpressions;
    using System.Diagnostics;
     
    public static class Pattern_forms
    {
        public static void authentification()
        {
            if (Session["password"] == "")
            {
                //Application.exit();
                //Close();
                Response.Write("<body><script>self.parent.opener=null;;self.parent.close();</script></body>");
            }
        }
    }
    Il y a toujours un élément dans chacune de ses méthodes qui est souligné, et il mette :
    Le nom *** n'existe pas dans le contexte actuel.
    Quelqu'un aurait-il une idée sur mon problème ?

    En vous remerciant.
    Programmer c'est comme gravir une montagne...
    Il faut procéder par étapes...
    (? auteur ?)
    Un seul être vous manque et tout est dépeuplé.
    Lamartine (merci chat hotplug ^^)

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    à part le fait que le mieux est d'utiliser "Form authentication" et pour répondre à un de tes questions, normalement tu dois déclarer une page basique que tt tes pages en hérite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class PageBase:System.Web.UI.Page
    {
        //Ton code pour vérification de l'authentication  
    }
     
    public partial class ChaquePage: PageBase
    {
         //ton code
    }
    peut etre que ça va t'aider :

    http://www.thescarms.com/dotnet/Session.aspx

    http://www.codeproject.com/KB/archit...heritance.aspx

    sinon, ci-aprés un article sur l'athentication : http://www.4guysfromrolla.com/articles/120705-1.aspx

    Cdt,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  3. #3
    Membre habitué Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Merci beaucoup pour votre aide.

    Je travaille sous Visual Studio 2008, en ASP.NET C# (depuis peu). Et mes pages ce sont des WebForm.

    Mon but est de faire une page d'authentification bien entendu, avec un mot de passe unique stocké dans une table d'une base de données.

    Le but de ma classe/fonction est d'éviter qu'une personne puisse directement passer à une page de l'application en tapant l'adresse de la page dans la barre d'adresse... Et donc on vérifie s'il s'est authentifié et si non et bien on lui ferme la fenêtre à laquelle il a réussi à accéder.

    Cette page basique... Elle permet d'être appeler dans d'autres pages c'est bien ça ? (Car en faite le projet est quasiment réalisé, et donc un certains nombre de pages déjà créé)

    Pour ce qui est de la procédure MemberShip pour le moment on ne l'utilise pas, car on va utiliser un mot de passe unique (tout utilisateur confondu) qui sera stocké dans une table de la base de données.
    Programmer c'est comme gravir une montagne...
    Il faut procéder par étapes...
    (? auteur ?)
    Un seul être vous manque et tout est dépeuplé.
    Lamartine (merci chat hotplug ^^)

  4. #4
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    tes pages hérite bien sur de System.Web.UI.Page, donc au lieu de faire ça, tu vas créer la PageBase (une simple classe) qui va hérité de System.Web.UI.Page
    et tes pages hérite de cette dernière.

    ça revient à la même chose, si juste qu'au lieu de taper le même code de vérification dans chaque page, la PageBase sert à faire cette vérification une seule fois.

    comme le montre l'exemple que j t'ai donné avant, ils ont met le code de vérification dans le OnInit de la PageBase :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Public Class MyBasePage
        Inherits System.Web.UI.Page
        ...
        Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
            ' Call the base OnInit method.
            MyBase.OnInit(e)
     
            If Not Context.Session Is Nothing Then
                If Session.IsNewSession Then
                    Dim strCookieHeader As String = Request.Headers("Cookie")
     
                    If Not strCookieHeader Is Nothing Then
                        If strCookieHeader.ToUpper().IndexOf("ASP.NET_SESSIONID") >= 0 Then
                            'On timeouts, redirect user to timeout page.
                            Response.Redirect("MyTimedOutPage.aspx")
                        End If
                    End If
                End If
            End If
        End Sub
     
        End Class
    je sais ci en vb.net mais on peut le convertir si tu ve, l'important ci de comprendre l'idée.

    Donc, ce que tu vas modifier ds tes pages ci l'héritage ( : PageBase au lieu de : System.Web.UI.Page) et bien sur le code que tu vas ajouté dans PageBase.
    De cette façon meme si l'utilisateur tape ds le navigateur 1 autre chemin d'une autre page, il aura la même verification.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  5. #5
    Membre habitué Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Je crois que j'abuse un peu mais je crois que je veux bien la traduction de ce code vb en c#. Parce que j'essaie de le faire mais j'ai l'impression de faire du grand n'importe quoi.
    Programmer c'est comme gravir une montagne...
    Il faut procéder par étapes...
    (? auteur ?)
    Un seul être vous manque et tout est dépeuplé.
    Lamartine (merci chat hotplug ^^)

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Points : 168
    Points
    168
    Par défaut
    si j'ai bien compris l'objectif recherché, tu devrait travailler avec les roles

    ça sera plus simple et largement plus efficace

    salutations

  7. #7
    Membre habitué Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Points : 128
    Points
    128
    Par défaut
    Je sais mais pour le moment il n'y qu'un seul type d'utilisateur : ceux qui connaissent le mot de passe.
    Programmer c'est comme gravir une montagne...
    Il faut procéder par étapes...
    (? auteur ?)
    Un seul être vous manque et tout est dépeuplé.
    Lamartine (merci chat hotplug ^^)

  8. #8
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    t'auras qlq chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Class1 : System.Web.UI.Page
        {
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
     
                if (Context.Session != null)
                {
                    if (Session.IsNewSession)
                    {
                        string strCookieHeader = Request.Headers["Cookie"];
     
                        if (!string.IsNullOrEmpty(strCookieHeader) &&
                            strCookieHeader.ToUpper().IndexOf("ASP.NET_SESSIONID") >= 0)
                            // On timeouts, redirect user to timeout page.
                            Response.Redirect("MyTimedOutPage.aspx");
                    }
                }
            }
     
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  9. #9
    Membre habitué Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Points : 128
    Points
    128
    Par défaut
    Merci beaucoup Redouane. ^_^
    Programmer c'est comme gravir une montagne...
    Il faut procéder par étapes...
    (? auteur ?)
    Un seul être vous manque et tout est dépeuplé.
    Lamartine (merci chat hotplug ^^)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/09/2008, 14h45
  2. Création d'une fonction qui prend en argument une liste de cellule
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/12/2007, 20h49
  3. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  4. declaration static d'une fonction classe
    Par SBP dans le forum MFC
    Réponses: 2
    Dernier message: 06/07/2004, 14h40
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo