在 ASP.NET Core 2.2 中,如果一个已经被授权的用户被删除了,可以通过以下代码解决:
Startup.cs
文件的 ConfigureServices
方法中添加了身份验证服务和授权服务:public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddAuthentication();
services.AddAuthorization();
// ...
}
Configure
方法中,添加以下代码:public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
app.UseAuthentication();
// ...
app.Use(async (context, next) =>
{
var user = context.User;
if (user.Identity.IsAuthenticated)
{
// 检查用户是否被删除
// 假设你有一个名为 UserService 的服务来检查用户是否存在
var userService = context.RequestServices.GetRequiredService();
var userId = user.FindFirst(ClaimTypes.NameIdentifier).Value;
var userExists = await userService.UserExists(userId);
if (!userExists)
{
// 如果用户不存在,删除当前用户的身份验证 Cookie
await context.SignOutAsync();
await context.ForbidAsync();
return;
}
}
await next();
});
// ...
}
上述代码中,我们在中间件中检查了用户是否存在。首先,我们获取到用户的唯一标识符(可以根据实际情况修改);然后,我们使用一个名为 UserService
的服务来检查用户是否存在;如果用户不存在,我们使用 SignOutAsync
方法来删除当前用户的身份验证 Cookie,并使用 ForbidAsync
方法来禁止访问。
请注意,上述代码中的 UserService
是一个虚拟的示例,你需要根据实际情况替换为你自己的服务。