- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 ASP .Net Core API 项目。在这个项目中,我使用 JWTBearer 身份验证。我还使用了 .Net Core 依赖注入(inject)的 AddDistributedRedisCache 功能。 (都显示在下面)
我们有时需要将 token 列入黑名单(管理员用户删除权限、注销等),以便这些 token 立即生效。本质上是强制用户在可以进行下一次调用之前重新登录。
我们将 JWT token 添加到 redis 缓存中,并在注销时将它们从客户端缓存中删除。但是用户可以(理论上)存储 JWT token ,并且在 token 过期之前仍然可以访问,除非我们拦截调用并根据黑名单检查它。
如何在下面的代码中访问“OnTokenValidated”事件中的分布式缓存对象?我每次都必须手动创建一个新连接吗?我们只检查有效 token ,因为这将阻止无效请求甚至被黑名单检查。
不记名 token 配置:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "localhost:5000",
ValidAudience = "localhost:5000",
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration.GetValue<string>("SigningKey"))),
};
options.Events = new JwtBearerEvents
{
OnTokenValidated = context => {
//context.Fail("User has been logged out");
return Task.CompletedTask;
}
};
});
Redis缓存配置:
services.AddDistributedRedisCache(option =>
{
option.Configuration = Configuration.GetValue<string>("RedisCacheAddress");
option.InstanceName = Configuration.GetValue<string>("RedisCacheInstance");
});
最佳答案
您可以使用那里提供的 HttpContext 访问 DI 中的服务:
OnTokenValidated = ctx =>
{
var cache = ctx.HttpContext.RequestServices.GetRequiredService<IDistributedCache>();
return Task.CompletedTask;
}
GetRequiredService
如果找不到该服务,将抛出异常。您可以使用 GetService<T>()
如果您希望该服务是可选的。
关于asp.net - ASP .Net Core 在 JWTBearerOptions.Events OnTokenValidated 事件中访问 DistributedRedisCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386946/
我在 .net core 3.1startups.cs 类上使用以下代码。它没有触及下面的线。就我而言,我从 Azure AD 获取 token ,并想要检查用户是否存在于我们的应用程序数据库(外部数
使用 asp.net core 2.2,我在下面的启动中有以下内容我到达 OnRedirectToIdentityProvider 断点,然后我到达 appsettings "CallbackPath
目前,我正在使用 angular 4 和 net core 1.1 制作 SPA。我的系统使用 JWT 来检查用户身份。每次用户访问我的系统时,我都想检查他/她在数据库中的身份(状态、角色)并更新到
如果请求中提供了不记名 token ,我有一个场景需要重新创建委托(delegate)人。为此,我使用 OnTokenValidated 事件来执行一些自定义逻辑(如果持有者有效)。我检查用户电子邮件
我在 ASP.NET Core 3 应用程序中使用 Azure B2C,它运行良好。 我在启动中使用以下代码: services.AddAuthentication(AzureADB2CDefault
我想在 ASP.NET Core 2.0 中正确使用 DI,以便让我的自定义方法处理在身份验证期间验证 JWT token 后触发的 OnTokenValidated 事件。下面的解决方案有效,除了在
在我的 API 项目中,我正在使用 JwtBearer 处理身份验证(用户使用 Azure 登录)。调用 API 时,将使用定义的 Azure 实例验证 token ,这一切正常。 当 token 被
我有一个 ASP .Net Core API 项目。在这个项目中,我使用 JWTBearer 身份验证。我还使用了 .Net Core 依赖注入(inject)的 AddDistributedRedi
最近我们创建了一个 React 前端,它按照本教程与我们的 API 后端进行通信:https://itnext.io/a-memo-on-how-to-implement-azure-ad-authe
我是一名优秀的程序员,十分优秀!