我正在使用具有多个外部授权(提供者)的Identityserver。我在这里尝试得到的场景是,我有一个客户端配置为"EnableLocalLogin“为false。我确实有多个外部提供商。快速入门中的"LoginViewModel.cs“中的以下代码行没有任何意义。
public bool IsExternalLoginOnly => EnableLocalLogin == false && ExternalProviders?.Count() == 1;
这是返回false,我没有被重定向到外部提供程序。是否应为ExternalProviders?.Count() >0
发布于 2017-07-17 23:32:33
在我看来,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自动执行此步骤
https://stackoverflow.com/questions/45085362
复制相似问题