我正在使用具有多个外部权限(提供商)的Identityserver。我想要到达的场景是我有一个客户端配置了" EnableLocalLogin"假的。我有多个外部提供商。 " LoginViewModel.cs"中的以下代码行快速启动没有意义。
public bool IsExternalLoginOnly => EnableLocalLogin == false&& ExternalProviders?.Count()== 1;
返回false,我没有被重定向到外部提供商。这应该是ExternalProviders吗?.Count()> 0
答案 0 :(得分:0)
在我看来,IsExternalLoginOnly
没有很好的名字。只有在您显示登录页面时才会调用它:
[HttpGet]
public async Task<IActionResult> Login(string returnUrl)
{
var vm = await _account.BuildLoginViewModelAsync(returnUrl);
if (vm.IsExternalLoginOnly)
{
// only one option for logging in
return await ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
}
return View(vm);
}
用于直接重定向到提供者,以防用户别无选择。
现在,在您的情况下,您有多个外部提供商,您必须询问用户使用哪个。只要您的客户端允许多个提供者
,您就无法自动通过此步骤您仍然可以编写自己的登录代码,并尝试按照returnUrl