问题是我使用 ASP.NET Core Identity 来存储用户数据,但是当我登录时,它没有给我任何 cookie 或 session 。它只是告诉我我已经成功登录,但下次我想访问包含 [Authorize]
属性的网页时,我就是不能。它会将我重定向到登录页面。
if (ModelState.IsValid)
{
var user = await _userManager.FindByEmailAsync(model.Email);
if (user != null)
{
var result = await _signInManager.PasswordSignInAsync(user, model.Password, true, false);
if (result.Succeeded)
{
if (ReturnUrl != null)
{
return Redirect(ReturnUrl);
}
if (!string.IsNullOrEmpty(model.AppId))
{
return RedirectToAction(nameof(Authorize), new AuthorizeModel { AppId = model.AppId, RedirectUri = model.RedirectUri, State = model.State });
}
else
{
return Ok("You have successfully logged in");
}
...... More code
Startup.cs
services.AddDbContext<PassportDbContext>(options =>
{
options.UseSqlite(Configuration.GetConnectionString("DbConnection"));
});
services.AddIdentity<OAUser, IdentityRole>()
.AddEntityFrameworkStores<PassportDbContext>()
.AddDefaultTokenProviders();
-----------------------------------------------------
app.UseHttpsRedirection();
app.UseStaticFiles();
// app.UseCookiePolicy();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
Image: The cookies after I sign in
这意味着该应用程序不会向我提供任何我已登录的凭据。
最佳答案
.Net core 2.1 或更高版本内置支持 GDPR
(通用数据保护条例)。
并且在您接受 cookie 之前,cookie 不会在浏览器中设置。
添加以下代码以忽略 GDPR
services.Configure<CookiePolicyOptions>(options =>
{
options.ConsentCookie.IsEssential = true;
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
app.UseCookiePolicy();
关于c# - ASP.NET Core 3.0 身份不向我的浏览器添加任何身份验证数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59598352/