Zie*_*elu 6 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']
Run Code Online (Sandbox Code Playgroud)
但是,每个用户只会发生一次。如果我注销并再次登录,则pre_spawn_start不会再次调用,并且旧令牌仍然存在于环境变量中。
是否可以user.get_auth_state()直接从笔记本进行访问,以便我可以确保使用当前令牌,而不是之前设置并存储在环境中?
否则,是否可以强制生成器在注销时停止,以便后续登录将触发pre_spawn_start?
小智 -1
似乎这个 c.Authenticator.refresh_pre_spawn = True,正如 Eos Antigen 的建议解决了这个问题:每次您再次登录时,预生成定义的函数都会再次执行。
| 归档时间: |
|
| 查看次数: |
1910 次 |
| 最近记录: |