如何从笔记本访问当前用户/ auth_state

时间:2018-07-11 14:21:43

标签: jupyter-notebook jupyterhub

我正在将JupyterHub与自定义身份验证器一起使用。 它将使用访问令牌设置auth_state,然后可以将其复制到pre_spawn_start方法内部的环境中,如示例所示:

class MyAuthenticator(Authenticator):
    @gen.coroutine
    def authenticate(self, handler, data=None):
        username = yield identify_user(handler, data)
        upstream_token = yield token_for_user(username)
        return {
            'name': username,
            'auth_state': {
                'upstream_token': upstream_token,
            },
        }

@gen.coroutine
def pre_spawn_start(self, user, spawner):
    """Pass upstream_token to spawner via environment variable"""
    auth_state = yield user.get_auth_state()
    if not auth_state:
        # auth_state not enabled
        return
    spawner.environment['UPSTREAM_TOKEN'] = auth_state['upstream_token']

但是,每个用户只发生一次。如果我注销并再次登录,则不会再次调用pre_spawn_start,并且环境变量中仍然存在旧令牌。

是否可以直接从笔记本计算机访问user.get_auth_state(),以便可以确保使用当前令牌,而不是先前设置并存储在环境中?

否则,是否可以强制使生成器在注销时停止,以便随后的登录将触发pre_spawn_start

0 个答案:

没有答案