我在 .net webapi 身份后端有不同的移动和 Web 应用程序登录方法。两个客户端都使用相同的身份验证方案(IdentityConstants.BearerScheme)。但我想更改我的客户的到期时间。例如,我的移动设备为 14 天,我的网络为 1 天。有没有办法在方法中动态更改令牌过期时间?
登录网页:
_signInManager.AuthenticationScheme = IdentityConstants.BearerScheme;
var result = await _signInManager.PasswordSignInAsync(loginForVisionRequest.Email, loginForVisionRequest.Password, isPersistent: false, lockoutOnFailure: true);
//make token expiration 14 days
if (!result.Succeeded)
{
return TypedResults.Problem("Unauthorized", statusCode: 401);
}
return TypedResults.Empty;
手机登录:
_signInManager.AuthenticationScheme = IdentityConstants.BearerScheme;
var result = await _signInManager.PasswordSignInAsync(loginForVisionRequest.Email, loginForVisionRequest.Password, isPersistent: false, lockoutOnFailure: true);
//make token validation 1 day
if (!result.Succeeded)
{
return TypedResults.Problem("Unauthorized", statusCode: 401);
}
return TypedResults.Empty;
我尝试使用不同的方案,但我必须使用 BearerAuthentication 而不是 JWT。
经过一番研究,我没有找到动态设置不记名令牌过期时间的方法。
如果这是您真正需要的,您必须实现自己的中间件来验证令牌是否仍然有效。您可以通过自己在令牌中添加指示令牌何时过期的时间戳来实现此目的。
然后实现您的自己的中间件,检查每个请求的令牌是否仍然有效。
这样您仍然可以根据用户的平台“动态”设置令牌的过期时间。