首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask OIDC用户登录为true,但内标识为None

Flask OIDC用户登录为true,但内标识为None
EN

Stack Overflow用户
提问于 2019-03-22 20:00:30
回答 1查看 384关注 0票数 4

我正在使用Flask-OIDC library对外部服务执行用户身份验证。

当用户第一次登录时,ODIC库工作正常。我可以看到用户信息和从外部身份验证生成的持有者令牌。

当我刷新页面时,问题出现了。如果我检查用户登录状态,ODIC库告诉我用户已登录,但令牌是None。请参阅以下代码:

代码语言:javascript
复制
@pdo_route.route('/edit_pdo', methods=['GET', 'POST'])
@oidc.require_login
def edit_pdo():
  if oidc.oidc.user_loggedin:
     oidc.get_access_token() # is None

oidc.oidc.user_loggedin返回True,但oidc.get_access_token()None

这是我的OIDC配置:

代码语言:javascript
复制
{
'SECRET_KEY': 'secret',
'TESTING': True,
'DEBUG': True,
'OIDC_ID_TOKEN_COOKIE_SECURE': False,
'OIDC_REQUIRE_VERIFIED_EMAIL': False,
'OIDC_USER_INFO_ENABLED': True,
'OIDC_OPENID_REALM': 'flask-demo',
'OIDC_SCOPES': ['openid', 'email', 'profile', 'name'],
'OIDC_INTROSPECTION_AUTH_METHOD': 'client_secret_post',
'OIDC_CLIENT_SECRETS': app.config.get("OIDC_CLIENT_SECRETS_PATH")
}
EN

回答 1

Stack Overflow用户

发布于 2021-07-13 02:26:22

对于未来的用户,请检查您是否只使用一个线程或多个线程运行此程序(gunicorn或类似的线程)。如果您使用多个线程运行,则需要使用跨线程/实例工作的不同impl更新您的credentials_store。

我使用的redis有一个非常简单的实现,如下所示:

代码语言:javascript
复制
class RedisCredentialsStore(dict):

    def __setitem__(self, sub, item):
        flask.g.redis.set(sub, item)

    def __getitem__(self, sub):
        return flask.g.redis.get(sub)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55299183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档