identityserver4快速入门LoginViewModel IsExternalLogInOnly标志

时间:2017-07-13 15:37:38

标签: identityserver4

我正在使用具有多个外部权限(提供商)的Identityserver。我想要到达的场景是我有一个客户端配置了" EnableLocalLogin"假的。我有多个外部提供商。 " LoginViewModel.cs"中的以下代码行快速启动没有意义。

public bool IsExternalLoginOnly => EnableLocalLogin == false&& ExternalProviders?.Count()== 1;

返回false,我没有被重定向到外部提供商。这应该是ExternalProviders吗?.Count()> 0

1 个答案:

答案 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

自动完成此步骤