所以过去两天我一直在碰壁。我将近两年没有从事ract /前端工作,所以请多多包涵。
场景:-加载页面-将内容放入localstorage(查询字符串参数)-导航至登录授权页面(为此使用react-aad-msal)-返回首页-尝试从localstorage检索数据,而我添加的键丢失。存在msal令牌等。
环境:-镀铬-用于调试的React插件
[意外的扭曲:这是随机发生的。昨天大部分时间它都在工作。然后我添加的键开始消失了。今天早上也是一样。
据我所知-如果我将某些内容放入本地存储,除非请求以编程方式或其他方式将其删除,否则它将保留在那里。
那么这是怎么回事?
确定我明白了。它必须是msal的行为-无论是react-aad-msal还是环绕的实际msal.js。无论如何,事实证明,解决方案是在创建提供程序时完全忽略本地存储问题,然后在AuthenticationParameters
的状态参数中传递查询字符串。
我只是通过组件传递查询字符串:
<AzureAD
provider={authProviderWithState(this.props.queryString)}
reduxStore={this.props.reduxStore}
forceLogin={false}>
然后将其粘贴在默认值的顶部
export const authProviderWithState = (state) => {
whichAuthParams.state = state;
return new MsalAuthProvider(whichConfig, whichAuthParams, LoginType.Redirect);
};
状态只是附加到授权端点使用的回调URL上,因此它可以根据需要工作。