有什么方法可以在 swift ios 应用程序中忘记 AzureAD MSAL 中的登录帐户吗?

问题描述 投票:0回答:4

我正在尝试注销用户,当我尝试重新登录时,它会使用以前的用户凭据而不输入密码。 当用户在 MSAL swift 中注销时,有什么方法可以清除凭据吗?

ios swift logout azure-ad-msal
4个回答
4
投票

let parameters = MSALInteractiveTokenParameters(scopes: kScopes) parameters.promptType = MSALPromptType.login

将标志保留为

.login
,以便它始终要求用户输入凭据。

这只是临时解决方案。


1
投票

您也可以在 iOS 13 或更低版本中使用此代码。通过更改promptType枚举,我们可以处理WebView中的登录行为。

 func acquireTokenInteractively() -> Single<(String, String)> {
            return Single<(String, String)>.create { [kScope] observer in
                guard let applicationContext = self.applicationContext else {
                    observer(.error(Errors.unknown))
                    return Disposables.create()
                }

                let parameters = MSALInteractiveTokenParameters(scopes: kScope, webviewParameters: MSALWebviewParameters(parentViewController: UIApplication.shared.keyWindow!.rootViewController!))
                parameters.promptType = .login //Change it based on ur requirement e.g. .selectAccount, .consent, .promptIfNecessary
                applicationContext.acquireToken(with: parameters) { (result, error) in
                    if let error = error {
                        NSLoggerSwift.Logger.shared.log(.custom("OutlookLogin"), .error, "\u{274C} Could not acquire token: \(error.localizedDescription)")
                        observer(.error(Errors.badToken))
                    }

                    guard let result = result else {
                        observer(.error(Errors.badToken))
                        return
                    }
                    observer(.success((result.accessToken, result.account.username ?? "")))
                }
                return Disposables.create()
            }
}

0
投票

简短的回答:由于所选技术的限制,截至 2019 年 5 月 30 日,在 iOS 上无法执行此操作。

您可以在以下位置阅读更多信息:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/589

并按照以下位置的功能请求进行操作:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/425


0
投票

您需要设置

 parameters.promptType = .selectAccount

然后用户可以通过单击...并选择注销来注销

© www.soinside.com 2019 - 2024. All rights reserved.