【发布时间】: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