CallbackPath
в промежуточном программном обеспечении OpenID Connect - это внутренний путь, используемый для проверки подлинности протокола OpenID Connect. После того, как провайдер Identity перенаправит пользователя на этот URL-адрес в вашем приложении, промежуточное ПО будет обрабатывать оценку токенов, декодировать токен, обмениваться токенами и, наконец, заполнять принцип пользователя, и этот процесс запускается до того, как ваш контроллер подключается.
С CallbackPath
является внутренним и будет обрабатываться промежуточным программным обеспечением OpenID Connect автоматически, вам не нужно об этом заботиться, убедитесь, что обратный вызов зарегистрирован в разрешенном URL-адресе перенаправления Facebook и разрешите промежуточному программному обеспечению обрабатывать обратный вызов. Если вы хотите перенаправить пользователя на указанный c route / page после аутентификации, установите URL-адрес на AuthenticationProperties
:
if (!User.Identity.IsAuthenticated)
{
return Challenge(new AuthenticationProperties() { RedirectUri = "/home/Privacy" } ,FacebookDefaults.AuthenticationScheme);
}
И вы должны удалить маршрут обратного вызова (signinfacebookcallback
) в вашем приложении.
UPDATE
Если вы хотите получить доступ к базе данных и управлять локальным пользователем, вы можете использовать встроенные события в промежуточном программном обеспечении, для AddFacebook
промежуточного программного обеспечения вы можете использовать OnTicketReceived
для добавления базы данных доступа, управления пользователями и добавить претензии к принципу пользователя:
.AddFacebook(options =>
{
options.ClientId = "xxxxxxxxxxxxx";
options.ClientSecret = "xxxxxxxxxxxxxxxxxxxx";
options.CallbackPath = "/signinfacebookcallback";
options.Events = new OAuthEvents
{
OnTicketReceived = ctx =>
{
//query the database to get the role
var db = ctx.HttpContext.RequestServices.GetRequiredService<YourDbContext>();
// add claims
var claims = new List<Claim>
{
new Claim(ClaimTypes.Role, "Admin")
};
var appIdentity = new ClaimsIdentity(claims);
ctx.Principal.AddIdentity(appIdentity);
return Task.CompletedTask;
},
};
});