2011-11-26 12 views
6

sé que una cookie se puede compartir entre varios subdominios utilizando el ajuste deautenticación de formularios de subdominios en el local de IIS

<forms 
    name=".ASPXAUTH" 
    loginUrl="Login/" 
    protection="Validation" 
    timeout="120" 
    path="/"  
    domain=".mydomain.com"/> 

en Web.config. Pero cómo replicar lo mismo en la máquina local. Estoy usando Windows 7 e IIS 7 en mi computadora portátil. Así que tengo sitios localhost.users/para mi sitio actual users.mysite.com localhost.host/ para host.mysite.com y similares.

Respuesta

9

localhost.users y localhost.host es un dominio cruzado. Las cookies no se pueden compartir entre dominios.

Se puede configurarlo como éste, así que el sub-dominio es diferente pero el dominio raíz sigue siendo el mismo:

  • users.localhost
  • host.localhost

Ahora configure el dominio de las cookies en su Web .config a localhost:

domain=".localhost" 

y en su archivo c:\Windows\System32\drivers\etc\hosts añadir las 2 entradas siguientes:

127.0.0.1 users.localhost 
127.0.0.1 host.localhost 

Ahora usted será capaz de compartir con éxito la cookie de autenticación entre users.localhost y host.localhost.

Ah, y no olvide dar un paso en su proceso de compilación automatizado que transformará su valor web.config en el dominio raíz correcto antes de enviarlo en producción.

+0

Gracias Darin, Cómo configurar esto en IIS cuando creé estos sitios desde Visual Studio. – Parminder

+1

@Parminder, las preguntas de configuración de IIS deben discutirse en http://serverfault.com. –

+0

Darin, gracias. He hecho esta pregunta allí, pero ¿tiene sentido hacer la misma pregunta en dos lugares diferentes? – Parminder

3

Este es un recordatorio para cualquier persona que se ejecute en Framework 4.5 e intente compartir el token con frameworks 4 y anteriores, tenga en cuenta que esto no le permitirá recibir la cookie de autenticación en ninguna de las 4 aplicaciones inferiores. es decir: si en su web.config tiene:

<httpRuntime maxRequestLength="80480" targetFramework="4.5" /> 

Puede conseguir que funcione mediante la eliminación del atributo targetFramework="4.5" a conseguir que funcione, aunque no sé si hay algún efecto secundario en hacerlo:

<httpRuntime maxRequestLength="80480" /> 
+0

¡Esto me salvó en un par de sitios web que usan .NET 4.5.1! –

+0

No pude trabajar en la autenticación de una aplicación secundaria. Es trabajo con targetFramework = "4.5" en los 2 archivos web.config. Gracias – Troopers

Cuestiones relacionadas