none
Logueo de dos aplicaciones en el mismo servidor se bloquean RRS feed

  • Pregunta

  • Hola, tengo el siguiente problema:

    tengo dos aplicaciones por separado con su propio sistema de logueo (Haciendo uso de Identity) y funcionan muy bien, pero, cuando me logueo en un sistema y abro otra pestaña e ingreso al segundo sistema (con usuarios diferentes) en el primero se cierra la sesión y si me logueo nuevamente en el primero se cierra la sesión del segundo y así eternamente jejeje 

    alguien tiene alguna idea de como evitar esto?

    por su ayuda muchas gracias, espero haberme dado a entender.


    • Editado irvin leiva miércoles, 30 de octubre de 2019 21:57 titulo poco explicativo
    miércoles, 30 de octubre de 2019 19:48

Respuestas

  • ya encontré la solución:

    en el archivo Startup.Auth.cs en el método ConfigureAuth se hace uso de app.UseCookieAuthentication ahí se le agrega la propiedad CookieName=".nombre-de-cookie" en las CookieAuthenticationOptions quedando así:

    app.UseCookieAuthentication(new CookieAuthenticationOptions
                {
                    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                    LoginPath = new PathString("/Account/Login"),
                    CookieName=".nombre-de-cookie",
                    Provider = new CookieAuthenticationProvider
                    {
                        // Enables the application to validate the security stamp when the user logs in.
                        // This is a security feature which is used when you change a password or add an external login to your account.  
                        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                            validateInterval: TimeSpan.FromMinutes(30),
                            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                    }
                }); 

    y en el web.config agregar <sessionState cookieName="nuestro-ASP.NET_SessionId" /> dentro de <system.web></system.web>

    y con eso cambiamos la cookie de autenticación y la de sessionState, y ya no se cruzaran las sesiones de los sistemas.


    • Marcado como respuesta irvin leiva jueves, 31 de octubre de 2019 16:48
    • Editado irvin leiva jueves, 31 de octubre de 2019 16:49
    jueves, 31 de octubre de 2019 16:47

Todas las respuestas

  • Mira a ver qué nombre de Cookie estás usando para el login, no vaya a ser que los dos sitios tengan el mismo nombre y que los dos "cuelguen" del mismo sitio web (en dos carpetas distintas), con lo que compartirían la cookie de sesión y se haría un lío entre los dos.

    En el web.config tendrás algo parecido a esto:

    <authentication mode="Forms"> 
      <forms loginUrl="member_login.aspx" 
        cookieless="UseCookies" 
        name=".ASPXFORMSAUTH" /> 
    </authentication>

    Fíjate en donde dice "name", que es el nombre de la cookie. Si los dos sitios web cuelgan del mismo dominio, cerciórate de que tienen un nombre de cookie diferente.

    miércoles, 30 de octubre de 2019 22:43
  • Gracias por tu respuesta

    he logrado cambiar el nombre de la cookie de la session state 

    pero aún así me sigue generando una cookie llamada .AspNet.ApplicationCookie que creeria que es la que cambiaría con tu sugerencia, aplique la el siguiente codigo y no cambio

    <authentication mode="Forms"> 
      <forms loginUrl="~/Account/login.cshtml" 
        cookieless="UseCookies" 
        name=".ASPXFORMSAUTH" /> 

    no se si tiene que ver con que hago uso de mvc5

    jueves, 31 de octubre de 2019 15:53
  • ya encontré la solución:

    en el archivo Startup.Auth.cs en el método ConfigureAuth se hace uso de app.UseCookieAuthentication ahí se le agrega la propiedad CookieName=".nombre-de-cookie" en las CookieAuthenticationOptions quedando así:

    app.UseCookieAuthentication(new CookieAuthenticationOptions
                {
                    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                    LoginPath = new PathString("/Account/Login"),
                    CookieName=".nombre-de-cookie",
                    Provider = new CookieAuthenticationProvider
                    {
                        // Enables the application to validate the security stamp when the user logs in.
                        // This is a security feature which is used when you change a password or add an external login to your account.  
                        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                            validateInterval: TimeSpan.FromMinutes(30),
                            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                    }
                }); 

    y en el web.config agregar <sessionState cookieName="nuestro-ASP.NET_SessionId" /> dentro de <system.web></system.web>

    y con eso cambiamos la cookie de autenticación y la de sessionState, y ya no se cruzaran las sesiones de los sistemas.


    • Marcado como respuesta irvin leiva jueves, 31 de octubre de 2019 16:48
    • Editado irvin leiva jueves, 31 de octubre de 2019 16:49
    jueves, 31 de octubre de 2019 16:47