我收到了一个要求,在新的一个月开始时强制重新授权用户(我们有一个月订阅模式)。为了实现这一点,并且不影响应用html" target="_blank">程序中使用的其他身份验证提供者,我修改了登录调用,如下所示:
以前:
await HttpContext.SignInAsync(authorizationProvider.GetClaimsPrincipal());
之后:
await HttpContext.SignInAsync(authorizationProvider.GetClaimsPrincipal(), authorizationProvider.GetAutheticationProperties());
public AuthenticationProperties GetAutheticationProperties() =>
new AuthenticationProperties
{
ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(1),
IsPersistent = true,
AllowRefresh = false
};
请注意,出于测试目的,< code > expire suc 将被设置为1分钟;一旦实施成功,它将被计算到月底。
我期望我们的身份(扩展ClaimsIdentity
)在到达ExpiresUtc
后会获得其属性
false,但事实并非如此。正在读取ClaimsIdentity。IsAuthenticated声明
如果身份已通过身份验证,则为true;否则为假。备注:如果身份验证类型属性不是null或空字符串,则为true。
现在我很困惑..到期后我会发生什么?分别,身份如何成为 IsCertified == 假
?
我们目前使用 asp.net 核心 2.2,并且正在迁移到 3。
身份验证在应用程序启动时像这样注册(Startup.cs
):
var expirationInMinutes = Convert.ToInt32(Configuration["Authentication:ExpirationInMinutes"]);
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
// Configure cookie authentication
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, o =>
{
o.LoginPath = new PathString("/Account/LogOn");
o.LogoutPath = new PathString("/Account/LogOut");
o.AccessDeniedPath = new PathString("/Account/AccessDenied");
o.SlidingExpiration = true;
o.ExpireTimeSpan = TimeSpan.FromMinutes(expirationInMinutes);
o.Cookie.Expiration = TimeSpan.FromMinutes(expirationInMinutes);
o.EventsType = typeof(CustomCookieAuthenticationEvents);
// Used because of safari
o.CookieManager = new ChunkingCookieManager()
{
ChunkSize = 2048,
ThrowForPartialCookies = true
};
});
没有如期到期的另一个原因可能是ClockSkew。默认情况下,您的令牌将在5分钟内有效。
请参阅JWT令牌身份验证,过期的令牌仍然有效,.net core Web Api
当用户通过身份验证时,将发出票证。为了节省数据库查询,该票证会在一定时间间隔内重新验证(默认为20分钟)。当身份验证票证过期时,在票证重新验证之前,该票证不会真正生效,因此,如果您的验证间隔为20分钟,无论您将过期设置为什么,它们都将保持登录至少20分钟。
您可以降低这个时间间隔,如果愿意的话,可以一直降低到零,这实际上意味着每一次请求都会重新验证该票证。然而,时间间隔越短,数据库需要处理的查询就越多,所以这是一个权衡。要更改间隔,只需添加:
services.Configure<SecurityStampValidatorOptions>(c =>
{
c.ValidationInterval = TimeSpan.FromMinutes(1);
});
我想在LiveData-Object上更新存储库中对象的成员变量。问题是,如果我调用getValue()方法,我总是会得到一个NullPointerExctive,尽管这个值确实存在于我的房间库中。 我现在的问题是,如何在不调用observe()方法的情况下从LiveData对象获取值?(我无法在我的存储库中调用observe方法,因为该方法希望我输入一个LifeCycleOwner-refere
我只想在用户触摸按钮时为按钮设置不同的背景色。 但在整个过程中,这种颜色一直保持不变,因为按钮正在运行,即使我不再触摸按钮 请帮我找到解决办法
我目前遇到了以下问题,我希望在满足条件之前删除pandas数据帧中的行。我想删除“Number”列中满足10或更大条件之前的每一行,具体取决于Name列。假设dataframe(df)有两列名为“Name”和“Number”。我希望在满足条件之前删除每个唯一名称的所有行,并在满足条件之后保留所有行。 下面的代码在满足条件后删除所有项,但这将应用于整个系列/列的值。我想对每个唯一的名称分别这样做。有
我试图抛出一个目标。但是在运行时,对象类仍然是一个派生类。 那么为什么类属性没有改变呢?
问题内容: 我正在使用http://www.json.org/java/index.html此处提供的JSON库将必须转换的JSON字符串转换为CSV。但是我有一个问题是,转换后键的顺序丢失了。 这是转换代码: 结果如下: 虽然我期望保持键的顺序: 有什么办法可以使用此库获得此结果吗?如果不是,是否有其他库可以提供保持键顺序在结果中的功能? 问题答案: 解决了。 我使用了https://code.
问题内容: 我正在使用http://www.json.org/java/index.html此处提供的JSON库将必须转换的JSON字符串转换为CSV。但是我的问题是,转换后键的顺序丢失了。 这是转换代码: 这是“ someString”的内容: 结果如下: 我期望保持键的顺序: 有什么办法可以使用此库获得此结果吗?如果不是,是否还有其他库可以提供在结果中保留键顺序的功能? 问题答案: 解决了。