我已尝试实现在ASP.NET core 3.1 Web应用程序中找到的IClaimsTransformation
类
public class ClaimsTransformer : IClaimsTransformation
{
public ClaimsTransformer(IHttpContextAccessor httpAccessor) { }
public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal p)
{
p.AddIdentity(new ClaimsIdentity());
return Task.FromResult(p);
}
}
我是这样添加的:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyConString")));
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddSingleton<IClaimsTransformation, ClaimsTransformer>();
services.AddIdentity<IdentityUser, IdentityRole>()
.AddRoleManager<RoleManager<IdentityRole>>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
...
当构造函数在启动期间被击中时,TransformAsync()
方法在访问控制器时从不触发。我遗漏了什么?有几个添加IClaimsTransformation
的实现,但除了类和通过单例/瞬时添加
虽然我应该补充一下,但我已经看到了app.UseClaimsTransformation()
的各种示例,但3.1中没有提供
您似乎遇到了相同的问题,已解决here
AddAuthentication设置DefaultSolutions(Windows),但AddIdentity设置为Auth中间件优先的DefaultAuthenticateSolutions(Identity.Application)。您没有使用身份Cookie登录,因此声明转换不会运行。注释掉AddIdentity会使您返回到Windows身份验证,并允许运行转换。在AddIdentity之后将DefaultAuthenticateSolutions设置为IISDefaults.AuthenticationSolutions也可以修复它。上一篇:从下载的html文件中提取的Dataframe包含以空格分隔的浮点;如何清理?浮点、空格、文件、html
下一篇:依赖DLL是没有得到复制到Visual Studio中的生成输出文件夹文件夹、DLL、Visual、Studio