Keycloak JavaScript适配器回调事件顺序:onAuthSuccess是否早于onReady触发?
Keycloak JS适配器回调触发顺序结论
这个假设是错误的,两个回调的触发逻辑和顺序和用户的访问场景直接相关:
onReady:只要Keycloak适配器完成初始化就会触发,和用户是否已经认证无关,回调会传入一个布尔值参数,参数为true即代表当前用户已完成认证,false代表未认证。onAuthSuccess:仅当用户主动走完认证流程时才会触发,比如首次登录提交凭证后跳转回应用、令牌过期后刷新成功、休眠会话恢复后验证通过等场景。
不同场景下的触发顺序如下:
- 若用户首次访问应用,尚未有有效会话,需要跳转到Keycloak登录页完成认证后跳转回应用,此时触发顺序为
onAuthSuccess先执行,之后才会触发onReady,你的假设在该场景下成立。 - 若用户已经持有有效会话,刷新页面或者重新打开应用时,适配器初始化阶段会直接校验本地存储的有效令牌/会话信息,此时不会触发
onAuthSuccess,只会直接触发onReady且回调参数为true,你的假设在该场景下不成立。
注意:不要依赖
onAuthSuccess来判断用户是否已认证,更稳妥的实现方式是直接在onReady回调中通过入参判断认证状态,再执行后续的业务逻辑。
内容的提问来源于stack exchange,提问作者Ankit Koirala
相关产品推荐
相关产品推荐

