gpt4 book ai didi

azure - flutter 应用程序 : How to implement a proper logout function?

转载 作者:行者123 更新时间:2023-12-03 20:56:41 24 4
gpt4 key购买 nike

我有一个使用 Azure B2C 身份验证的 flutter 应用程序。为了实现这一点,我使用 flutter appAuth 包。登录过程工作正常,但 appAuth 不提供注销功能。登录后我得到一个访问 token 。到目前为止,我的注销是删除此访问 token 。

问题是,Azure 要求登录用户流程中的 Web 应用 session 生命周期至少为 15 分钟。这意味着:如果用户在 15 分钟内登录并退出,他将自动再次登录。这使得其他用户无法登录。

我希望通过真正的注销来修复此行为,而不是仅删除访问 token 。在 Azure Active Directory documentation 中找到以下代码行。但我无法让它运行。对于注销功能有什么建议吗?

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Fjwt.ms%2F

最佳答案

我按照以下源代码使用 David White 编写的应用程序身份验证来实现以下注销功能。

Future<void> _logOut() async {
try {
//for some reason the API works differently on iOS and Android
Map<String, String> additionalParameters;
if (Platform.isAndroid) {
//works on Android but will miss p parameter when redirected back to authorize on iOS
additionalParameters = {
"id_token_hint": _idToken,
"post_logout_redirect_uri": _redirectUrl
};
} else if (Platform.isIOS) {
// with p parameter when redirected back to authorize on iOS
additionalParameters = {
"id_token_hint": _idToken,
"post_logout_redirect_uri": _redirectUrl,
'p': '<tenantID>'
};
}
await appAuth.authorizeAndExchangeCode(
AuthorizationTokenRequest(
_clientId,
_redirectUrl,
promptValues: ['login'],
discoveryUrl: _discoveryURL,
additionalParameters: additionalParameters,
scopes: _scopes,
),
);
} catch (e) {
print(e);
}
setState(() {
_jwt = null;
});
}

来源:https://www.detroitdave.dev/2020/04/simple-azure-b2c-flutter.html

关于azure - flutter 应用程序 : How to implement a proper logout function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com