【发布时间】:2021-01-20 09:30:25
【问题描述】:
我在 dotnet core 3.1 上的 Razor Pages Web 应用程序中使用 Azure B2C,并且我想在添加或更改用户时将信息记录到我的数据库中。我还想确认用户在登录时是否在数据库中,如果不在则添加。现在我只是想让“新用户”运行。鉴于事件具有特定签名,我不知道如何将日志记录和配置添加到我的静态类中。
public UserRepository(ILogger<UserRepository> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
我一直在关注this article 并且我已经阅读了this post 并实现了一个静态类:
public async static Task<Task> OnTicketReceivedCallback(TicketReceivedContext context)
{
//OnTicketReceived
//Check if user just completed signup flow
List<Claim> claims = context.Principal.Claims.ToList();
bool isNewUser = claims.FirstOrDefault(x => x.Type == "newUser") == null ? false : true;
//If so, do what needs to be done
if (isNewUser)
{
//This is where I am getting the error and don't know how to push the logger and configuration through the stack
UserRepository repo = new UserRepository();
}
return Task.CompletedTask;
}
在启动时被调用:
public void ConfigureServices(IServiceCollection services)
{
services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAdB2C");
services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
options.Events.OnTicketReceived = B2CExtensions.OnTicketReceivedCallback
);
services.AddRazorPages()
.AddMicrosoftIdentityUI();
}
【问题讨论】:
标签: asp.net .net-core azure-ad-b2c razor-pages