我正在使用ASP.NET Core与Identity Server和Open Id Connect,如这里所述。当设置了“记住我”选项时,我需要更改身份验证Cookie的过期时间(默认为14天)。我可以看到名为“.AspNetCore.Identity.Application”的Cookie负责此事。我尝试像这样设置过期时间:
但它会影响另一个名为".AspNetCore.Cookies"的cookie(包含相同的令牌值),该cookie具有会话过期并且似乎没有任何作用。我找到的所有更改过期时间的方法都只修改了".AspNetCore.Cookies" cookie,我找不到任何修改".AspNetCore.Identity.Application" cookie的方法。(顺便说一下,由于某种原因,对我来说
请问有人可以解释一下这两个cookie之间的区别,以及我如何修改".AspNetCore.Identity.Application"的过期时间吗?
我的代码在
.AddCookie(options =>
{
options.Cookie.Expiration = TimeSpan.FromDays(1);
options.ExpireTimeSpan = TimeSpan.FromDays(1);
})
但它会影响另一个名为".AspNetCore.Cookies"的cookie(包含相同的令牌值),该cookie具有会话过期并且似乎没有任何作用。我找到的所有更改过期时间的方法都只修改了".AspNetCore.Cookies" cookie,我找不到任何修改".AspNetCore.Identity.Application" cookie的方法。(顺便说一下,由于某种原因,对我来说
services.ConfigureApplicationCookie
方法根本没有触发)。请问有人可以解释一下这两个cookie之间的区别,以及我如何修改".AspNetCore.Identity.Application"的过期时间吗?
我的代码在
Startup.ConfigureServices
中。services.AddMvc(options =>
{
// ...
})
services.AddAuthorization(options =>
{
options.AddPolicy(PolicyNames.UserPolicy, policyBuilder =>
{
// ...
});
});
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "oidc";
})
.AddCookie(options =>
{
options.AccessDeniedPath = "/AccessDenied";
options.SlidingExpiration = true;
})
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = "<authority>";
options.RequireHttpsMetadata = false;
options.ClientId = "<id>";
options.ClientSecret = "<secret>";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
// ...
});
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "MyCookie";
options.Cookie.Expiration = TimeSpan.FromDays(1);
options.ExpireTimeSpan = TimeSpan.FromDays(1);
});
services.ConfigureApplicationCookie
方法中设置选项根本没有被调用。 - zdevAddMvc
、AddAuthentication
和ConfigureApplicationCookie
的顺序吗? - zdevAddIdentity
吗?它使用OIDC,如此处所述。从IdentityServer(OpenIdConnectOptions.Authority)获取身份验证令牌。还有一个链接指向我在问题开头使用的示例。 - zdev