2010-06-01 4 views
1

NOTE: J'ai inclus 3 liens ici dans mes zones localhost mais je n'ai pas pu soumettre le post alors je les ai séparés avec un caractère espace pour qu'il soit affiché sur stackoverflow.Essayer de lire les tickets FormsAuthentication à lire dans d'autres zones du site

J'ai actuellement 2 applications ASP.NET MVC dans ma solution. D'abord, je lance le premier en le définissant comme projet de démarrage. Il va à la page de connexion, à partir de là, une fois que les données ont été saisies j'exécute le code suivant:

var authTicket = new FormsAuthenticationTicket(1, login.LoginDataContract.MSISDN, DateTime.Now, 
                  DateTime.Now.AddMinutes(Convert.ToDouble("30")), true, ""); 

      string cookieContents = FormsAuthentication.Encrypt(authTicket); 

      var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents) 
          { 
           Expires = authTicket.Expiration, 
           //Path = FormsAuthentication.FormsCookiePath 
           //Path = "http://localhost" 
           Domain = "" 
          }; 

      if (System.Web.HttpContext.Current != null) 
      { 
       System.Web.HttpContext.Current.Response.Cookies.Add(cookie); 
      } 

Comme vous pouvez le voir, je définir le domaine = « », donc théoriquement parlant, il devrait travailler sur quelque chose sous mon http: // localhost. Ensuite, j'ai défini la sécurité persistante du cookie sur true afin que je puisse y accéder de n'importe où sous localhost.

Le cookie écrit bien et je me suis connecté et tout de suite pour l'instant. BTW l'URL pour cette page de connexion est: http // localhost/MyAccount/Login

Maintenant, j'arrête la solution et définir les autres applications MVC pour le démarrage. Ensuite, je le cours. L'URL du deuxième site est: http: // localhost/WebActivations/ est le code ici dans les autres Titul contrôleur:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewData["Message"] = "Welcome to ASP.NET MVC!"; 

     // PASHA: Added code to read the authorization cookie set at 
     // login in MyAccount *.sln 

     for (int i = 0; i < System.Web.HttpContext.Current.Request.Cookies.Count;i++) 
     { 
      Response.Write(System.Web.HttpContext.Current.Request.Cookies[i].Name + " " + System.Web.HttpContext.Current.Request.Cookies[i].Value); 
     } 

     HttpCookie authorizationCookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName.ToString()]; 

     // decrypt. 
     FormsAuthenticationTicket authorizationForm = FormsAuthentication.Decrypt(authorizationCookie.Value); 

     ViewData["Message"] = authorizationForm.UserData[0].ToString(); 

     return View(); 
    } 

    public ActionResult About() 
    { 
     return View(); 
    } 

Le problème est dans ce contrôleur Home quand je lance la solution ne peut pas lire le cookie d'authentification, vous voyez la boucle là il ne trouve pas le cookie .ASPXAUTH.

Mais une fois qu'il se bloque dans Firefox, j'ai un coup d'oeil dans les informations de la page, puis la sécurité et les cookies et son et le même cookie.

Qu'est-ce que je fais mal?

Répondre

0

Essayez de régler les Domain="localhost"

+0

il ne fonctionne toujours pas –

+1

Mon mauvais dans les deux web.configs des deux sites j'ai oublié d'ajouter l'élément . –

+0

J'ai travaillé sur ce foutu problème pendant 14 heures et cette foutue machine-clé l'a résolu. tu m'aimes :) – Liran

0

Mon mauvais dans les deux web.configs des deux sites que j'oublié d'ajouter l'élément mahineKey.