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?
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 propiedadLoginPath
en el métodoAddCookie
con una ruta que exista en la segunda aplicación.Por ejemplo, si se tiene un controlador
Home
con una acciónIndex
, puede usar el siguiente código: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.