es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cookies compartidas de .NET Core

Tengo una aplicación de .NET Core con .NET Core Identity.
He configurado una cookie compartida en Startup.cs:

services.AddIdentity<User, Role>()
    .AddEntityFrameworkStores<DataContext>()
    .AddDefaultTokenProviders();

services.ConfigureApplicationCookie(options =>
{
    options.Cookie.Name = ".AspNet.SharedCookie";
});

services.AddAuthentication()

...

app.UseAuthentication();
app.UseAuthorization();

<p>También tengo una segunda aplicación de .NET Core donde no tengo autenticación en absoluto, pero quiero usar solo esa SharedCookie y hice lo siguiente en <code>Startup.cs</code>:</p>

<p>“`
services.AddAuthentication(“Identity.Application”)
.AddCookie(“Identity.Application”, options =>
{
options.Cookie.Name = “.AspNet.SharedCookie”;
});

app.UseAuthentication();
app.UseAuthorization();
“`
y en las acciones del controlador establezco el atributo [Authorize].

Me conecté en la primera aplicación y fui a la segunda aplicación y vi el error /Account/Login... la página no existe.

Sí, no tengo esa página, pero ¿por qué veo este problema? ¿Olvidé agregar algo en mi código?
Y una pregunta más: ¿qué es la cadena SharedCookie? ¿Es una cadena aleatoria o se codifica algún dato de usuario? ¿Puedo extraer alguna información de esa SharedCookie, por ejemplo, Id de usuario?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema se produce porque la segunda aplicación intenta redirigir a la página /Account/Login que no existe en la segunda aplicación. Para solucionar esto, es necesario configurar la propiedad LoginPath en el método AddCookie con una ruta que exista en la segunda aplicación.

    Por ejemplo, si se tiene un controlador Home con una acción Index, puede usar el siguiente código:

    services.AddAuthentication("Identity.Application")
        .AddCookie("Identity.Application", options =>
        {
            options.Cookie.Name = ".AspNet.SharedCookie";
            options.LoginPath = "/Home/Index"; // establecer a una ruta que exista en la segunda aplicación
        });
    

    En cuanto a la cadena SharedCookie, es una cadena generada aleatoriamente que se utiliza para identificar la cookie. No contiene ningún dato de usuario, pero se utiliza para hacer referencia a la información de autenticación del usuario almacenada en la cookie. No se pueden extraer datos de usuario de la cadena SharedCookie.

Comments are closed.