WebAuthenticator 总是跳过登录页面,如何为新用户获取新的登录表单?

Posted

技术标签:

【中文标题】WebAuthenticator 总是跳过登录页面,如何为新用户获取新的登录表单?【英文标题】:WebAuthenticator always skip login page, How to get new login form for new user? 【发布时间】:2021-11-01 12:41:18 【问题描述】:

WebAuthenticator 总是跳过登录页面,如何每次为新用户获取新登录。

【问题讨论】:

【参考方案1】:

您可以添加退出方法。我们检查了 MSAL 为我们在本地缓存的所有可用帐户并将它们注销。我们还会清除登录时存储在安全存储中的访问令牌。

public async Task<bool> SignOutAsync()

try

    var accounts = await _pca.GetAccountsAsync();

    // Go through all accounts and remove them.
    while (accounts.Any())
    
        await _pca.RemoveAsync(accounts.FirstOrDefault());
        accounts = await _pca.GetAccountsAsync(); //The _pca is the PublicClientApplicationBuilder
    

    // Clear our access token from secure storage.
    SecureStorage.Remove("AccessToken");

    return true;

catch (Exception ex)

    Debug.WriteLine(ex.ToString());
    return false;


更新:登录

      public async Task<bool> SignInAsync()
 
try

    var accounts = await _pca.GetAccountsAsync();
    var firstAccount = accounts.FirstOrDefault();
    var authResult = await _pca.AcquireTokenSilent(Scopes, firstAccount).ExecuteAsync();

    // Store the access token securely for later use.
    await SecureStorage.SetAsync("AccessToken", authResult?.AccessToken);

    return true;

catch (MsalUiRequiredException)

    try
    
        // This means we need to login again through the MSAL window.
        var authResult = await _pca.AcquireTokenInteractive(Scopes)
                                    .WithParentActivityOrWindow(ParentWindow)
                                    .ExecuteAsync();

        // Store the access token securely for later use.
        await SecureStorage.SetAsync("AccessToken", authResult?.AccessToken);

        return true;
    
    catch (Exception ex2)
    
        Debug.WriteLine(ex2.ToString());
        return false;
    

catch (Exception ex)

    Debug.WriteLine(ex.ToString());
    return false;


【讨论】:

Google 身份验证成功后,我实现了 SecureStorage.Remove("AccessToken")。它仍然默认选择电子邮件,而不是第二次询问电子邮件。 SecureStorage.Remove("AccessToken") 基本上不起作用。 通常情况下,MSAL 已经缓存了您的授权,如果仍然有效,您可以静默登录。但是,如果我们的授权不再被缓存,用户会看到一个登录对话框来完成该过程。请检查符号方法的 mu 更新。

以上是关于WebAuthenticator 总是跳过登录页面,如何为新用户获取新的登录表单?的主要内容,如果未能解决你的问题,请参考以下文章

WebAuthenticator -> 您必须继承 WebAuthenticatorCallbackActivity 并为其创建一个与您的 callbackUrl 匹配的 IntentFilte

如果用户已经登录 ionic,如何跳过登录页面

在用户已登录 Facebook 的设备上登录时如何跳过 Facebook 的权限页面

jeecg-boot中实现跳过登录验证访问其他vue页面

app单机游戏的登录界面怎么跳过

Selenium - 登录跳过