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 MVC Discussion :

[MVC3] Authentification et session


Sujet :

ASP.NET MVC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [MVC3] Authentification et session
    Bonsoir,

    Je solicite votre aide pour un probleme recurent que j'ai et je suis a court d'idee. J'ai fait un site avec une partie administration, avec authentification. J'ai utiliser l'AccountController proposer par defaut par le template ASP.NET MVC (la v3) que j'ai un peu modifier du coup.
    Mais lorsque je met un peu de temps a remplir mon billet (plus de 10 minutes) sur ma partie admin, quand j'appuye sur mon bouton creer je reviens a la page de login et j'ai perdu tout mon boulot du coup !

    Donc voici quelque morceaux de mon code :

    L'action LogOn de l'accountControle (j'ai pas trop fait de changement):

    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
     
    [HttpPost]
            public ActionResult LogOn(LogOnModel model, string returnUrl)
            {
                if (ModelState.IsValid)
                {
                    if (MembershipService.ValidateUser(model.UserName, model.Password))
                    {
                        FormsService.SignIn(model.UserName, model.RememberMe);
                        if (Url.IsLocalUrl(returnUrl))
                        {
                            return Redirect(returnUrl);
                        }
                        return RedirectToAction("Index", "Admin");
                    }
                    ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }
     
                // If we got this far, something failed, redisplay form
                return View(model);
            }

    la methode SignIn dans l'AccountModel (j'y ai fait quelque changement, j'ai laisser l'ancien code en commentaire) :


    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
     
    public void SignIn(string userName, bool createPersistentCookie)
            {
                if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
                var authTicket = new FormsAuthenticationTicket(1, userName, DateTime.Now,
                                                               DateTime.Now.AddMinutes(600), createPersistentCookie, "Administrateur",
                                                               FormsAuthentication.FormsCookiePath);
                var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));
                if (authTicket.IsPersistent)
                {
                    cookie.Expires = authTicket.Expiration;
                }
                HttpContext.Current.Response.Cookies.Add(cookie);
                //FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
            }
    avec ceci dans le Global.asax :
    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
     
    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
            {
                HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
                if (authCookie == null || authCookie.Value == "")
                {
                    return;
                }
                FormsAuthenticationTicket authTicket = null;
                try
                {
                    authTicket = FormsAuthentication.Decrypt(authCookie.Value);
                    string[] roles = authTicket.UserData.Split(new char[] { ';' });
                    if (Context.User != null)
                    {
                        Context.User = new GenericPrincipal(Context.User.Identity, roles);
                    }
                }
                catch
                {
                    return;
                } 
            }
    j'ai essayer de mettre ceci dans le Web.Config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <sessionState timeout="600"/>
        <authentication mode="Forms">
          <forms loginUrl="~/Account/LogOn" timeout="600" />
        </authentication>
    Es-ce que vous voyez un moyens que la session reste active plus plus longtemps ?

    Sinon j'ai un deuxieme soucis, j'ai fait une action qui renvois un JSON pour remplir une dropdownlist dynamiquement avec jQuery mais quand je fait une modification du json a renvoyer j'ai l'impression que l'ancien json est garder en cache y'as t-il un moyen de modifier cela ?

    Autrement si il y a 2 personne qui se connecte avec le meme compte es-ce qu'elle peuve se deconnecter mutuellement ?

    Merci de m'avoir et je vous remercie par avance de votre aide.

    Cordialement.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Re-bonsoir,

    Personne n'as une idée ? Je suis héberger chez Ikoula en mutualisé, si ça peut aider.

    Cordialement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Re-bonsoir.

    Après avoir fait quelque recherche j'ai vu que cela pouvais venir :

    - du recyclage de la pool d'application
    - Un processus qui se réinitialise toutes les 20 minutes en cas d'inactivité.

    Vous avez une idée de comment je pourrais vérifié cette information sur un hébergement mutualisé Ikoula ?

    Cordialement.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Si ça intéresse quelqu'un... j'ai trouver une solution, j'ai créer un Http Handler, que j'appelle grâce à une requête AJAX toutes les trentes secondes afin que la session ne timeout pas.

    Voici le liens d'ou j'ai trouver la solution : http://www.dotnetcurry.com/ShowArticle.aspx?ID=453

    Bon vent.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Je pense qu'il est plus simple de modifier le paramètre "timeout" dans le fichier "Web.config" par une valeur plus grande que tu veut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <forms loginUrl="~/Account/LogOn" timeout="600" />
    En effet, tu peut choisir une valeur plus grande que "600"

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

Discussions similaires

  1. JAAS authentification, Logout session?
    Par Sniper37 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 06/05/2010, 16h12
  2. Sécuriser l'authentification avec session
    Par yoris75 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/08/2008, 16h44
  3. [Cookies] authentification sans session ni cookies
    Par Oxycrest dans le forum Langage
    Réponses: 6
    Dernier message: 13/12/2007, 13h53
  4. Authentification MySQL + Session
    Par fabou3377 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/04/2007, 08h59
  5. [Cookies] authentification avec session
    Par bressan dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2007, 20h40

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