在 msal loginRedirect 方法期间获取 "state not found"
Getting "state not found" during msal loginRedirect method
我正在尝试在我的 React 应用程序中实施 msal 2。我使用 msal-react-samples/default 作为我工作的模板。我能够看到我的登录页面并使用 loginRedirect 方法登录。但是返回到我的应用程序后,我收到以下错误。我看到有人问了一个非常相似的问题(65375241)。但看起来用户放弃了它。我在下面包含了更多信息。
错误代码:“state_not_found”
错误消息:“未找到状态:缓存状态”
附加信息
正在对 ADB2C 进行身份验证
MsalConfig:
{ auth: { clientId: "REDACTED" authority: "REDACTED" knownAuthorities:["Redacted, Same as authority"], redirectUri: "http://localhost:3000/AuthTest", navigateToLoginRequestUrl: false }, cache: { cacheLocation: "sessionStorage", storeAuthStateInCookie: false, }, system: { loggerOptions: { ...(logger options from sample) } }
之前使用 MSAL1 进行身份验证。
我知道自 2021 年 1 月 7 日起,msal-react 包不适用于生产环境。如果有帮助,我可以尝试更改为仅使用 msal-browser 包。
我能够通过查看 MSAL git 回购问题找出我自己的错误
@azure/msal-browser redirect not working correctly
我将在这里描述我的问题,以帮助遇到同样错误的其他人。
是我的addEventCallback方法使用不当造成的
我在我的代码中将其实现为一个简单的函数调用。但是需要放到useEffect里面,消费之后还要发出removeEventCallback方法
我有
instance.addEventCallback((message) => {
console.log(message)
})
而不是
useEffect(() => {
const callbackId = instance.addEventCallback((message) => {
console.log(message)
})
return () => {
if (callbackId) {
instance.removeEventCallback(callbackId);
}
}
}, [instance])
我正在尝试在我的 React 应用程序中实施 msal 2。我使用 msal-react-samples/default 作为我工作的模板。我能够看到我的登录页面并使用 loginRedirect 方法登录。但是返回到我的应用程序后,我收到以下错误。我看到有人问了一个非常相似的问题(65375241)。但看起来用户放弃了它。我在下面包含了更多信息。
错误代码:“state_not_found” 错误消息:“未找到状态:缓存状态”
附加信息
正在对 ADB2C 进行身份验证
MsalConfig:
{ auth: { clientId: "REDACTED" authority: "REDACTED" knownAuthorities:["Redacted, Same as authority"], redirectUri: "http://localhost:3000/AuthTest", navigateToLoginRequestUrl: false }, cache: { cacheLocation: "sessionStorage", storeAuthStateInCookie: false, }, system: { loggerOptions: { ...(logger options from sample) } }
之前使用 MSAL1 进行身份验证。
我知道自 2021 年 1 月 7 日起,msal-react 包不适用于生产环境。如果有帮助,我可以尝试更改为仅使用 msal-browser 包。
我能够通过查看 MSAL git 回购问题找出我自己的错误 @azure/msal-browser redirect not working correctly
我将在这里描述我的问题,以帮助遇到同样错误的其他人。
是我的addEventCallback方法使用不当造成的
我在我的代码中将其实现为一个简单的函数调用。但是需要放到useEffect里面,消费之后还要发出removeEventCallback方法
我有
instance.addEventCallback((message) => {
console.log(message)
})
而不是
useEffect(() => {
const callbackId = instance.addEventCallback((message) => {
console.log(message)
})
return () => {
if (callbackId) {
instance.removeEventCallback(callbackId);
}
}
}, [instance])