【问题标题】:Asp core web-api session is empty after return ok()返回 ok() 后,Asp 核心 web-api 会话为空
【发布时间】:2020-07-01 13:10:18
【问题描述】:

在身份验证控制器的项目中,我创建 OTP 代码并返回给用户 如果用户发送另一个代码请求,它会检查会话以查看用户之前是否得到它 但是在新请求之后,我检查了HttpContext.Session.Keys,它是空的

它只适用于邮递员 不是任何浏览器

我的创业课

services.AddMvcCore(config =>
{
    config.EnableEndpointRouting = false;
    config.ReturnHttpNotAcceptable = true;
    config.Filters.Add(typeof(RequireHttpsAttribute));
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
})
 .AddApiExplorer()
 .AddFormatterMappings()
 .AddDataAnnotations()
 .AddCors(opt =>
    opt.AddPolicy("CorsPolicy", builder =>
    builder.WithOrigins("http://localhost:4200").AllowAnyMethod().AllowAnyHeader().AllowCredentials())
 ).AddNewtonsoftJson(opt =>
    {
        opt.SerializerSettings.ReferenceLoopHandling =
        Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    });
services.AddResponseCaching();
services.AddHsts(opt =>
{
    opt.MaxAge = TimeSpan.FromMinutes(5);
});

seeder.SeedUsers();
app.UseRouting();
app.UseStaticFiles(new StaticFileOptions()
{
    RequestPath = new PathString("/wwwroot")
});
app.UseSession();

在另一个项目中它运行良好,我不知道出了什么问题

【问题讨论】:

  • 你在用chrome吗?请检查登录请求的响应,它应该包含cookie,如果它们标有黄色警告符号,则表示chrome正在拒绝它们,可能是因为“SameSite”属性
  • 它在邮递员中工作,我该怎么办?它在任何浏览器中都不起作用@pablo-recalde
  • 它具有这部分在响应头的Set-Cookie:.AspNetCore.Session = CfDJ8ERmiwQ1NvZDnWm0tchsxytaeVBVvqPdD%2BnWzaBrzqO2%2FRsqmzzAJeeCzTrbykQUc7A4Li0oV3W9ZqgHbtdyFQE8jbrTDGWlQx81CCEmbw1O0Dg3RRgoAgZlpj0YFbSRe%2FQLmcQ20nylsjK2VjOMTV1DSab8L3XQVgfEFRgK4dAA;路径=/;同一站点=松懈; httponly @pablo-recalde

标签: c# api asp.net-core session


【解决方案1】:

我假设你在客户端使用 angualr

所以

在生产模式下,客户端和 web api 在同一个站点上,所以你对会话没有问题,但在开发模式下,你的 Angular 托管在 localhost:4200 上,它会在每次调用服务时重置会话。

您可以在开发模式下将 angular 和 web api 托管在同一主机上,但这意味着我必须一直进行 ng 构建(这将产生很大的开销)。

使用其他方式保存您的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多