作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 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/
我是一名优秀的程序员,十分优秀!