我在我的项目中使用 vue js 2 和 asp.net core 2.2 我在我的应用程序上使用 origin cors 并将我的 vue js 开发地址设置为 WithOrigins 并根据请求在前端设置 {withCredentials: true }
services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
builder
.WithOrigins("http://localhost:8080")
.AllowCredentials()
.AllowAnyMethod()
.AllowAnyHeader();
}));
设置启动以正确使用会话,如下所示 在配置服务
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(10);
});
并使用它
app.UseSession("AllowAll");
当前端身份验证成功时,我必须在会话和其他请求上保存登录用户,我需要在会话上保存对象并返回另一个请求。 我尝试 setString 设置...但是当我发送另一个请求时,每个请求的会话 ID 都会更改,并且我无法获取上次会话中设置的内容。 是否有另一种方法可以在会话等内容中保存用户状态? 我使用了 ImemoryCache 但我不知道生命周期或者是否为每个用户生成唯一的 id? 有什么方法使用会话?(我知道restful api与令牌通信,但我需要它)
先在数据库中建立一个Session表,然后添加到StartUp.cs中:
services.AddDistributedSqlServerCache(options =>
{
options.ConnectionString = conString;
options.SchemaName = "dbo";
options.TableName = "SessionData";
});
services.AddSession(options =>
{
options.Cookie.Name = "MyApp.Session";
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
options.Cookie.SameSite = SameSiteMode.Lax;
});
您还需要一个客户端http方法和mvc控制器方法来发送您想要存储在会话表中的数据。