在客戶端選項中,嘗試將EnableLocalLogin設置爲false。從docs:
EnableLocalLogin
,如果此客戶端可以使用本地帳戶,或僅外部境內流離失所者。默認爲true。
我也使用Asp.Net Core Identity,並且我設置AccountsController繞過本地頁面,如果EnableLocalLogin爲false並且只有一個外部提供程序,或者如果idP在請求中顯式設置。
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Login(string returnUrl = null)
{
// Clear the existing external cookie to ensure a clean login process
await HttpContext.Authentication.SignOutAsync(_externalCookieScheme);
var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
if (context?.IdP != null)
{
// if IdP is passed, then bypass showing the login screen
return ExternalLogin(context.IdP, returnUrl);
}
var vm = await BuildLoginViewModelAsync(returnUrl, context);
if (vm.EnableLocalLogin == false && vm.ExternalProviders.Count() == 1)
{
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
}
return View(vm);
}