reactjs - 不调用重定向回调,但访问了重定向 URI
问题描述
我尝试使用 Microsoft Azure 登录。
到目前为止有效的方法:
- 使用
loginPopup().then(response => console.log(response)
时,我被要求登录然后获取我在这里打印的令牌。这对我来说意味着一切都已正确设置和配置。 - 用户体验不是用弹出窗口来打扰用户,而是使用
loginRedirect()
。再次要求我登录,然后我被重定向到注册的 URI (AuthPage)。
问题:
- 注册的回调函数永远不会被调用。我想将接收到的token存储在App中,并在用户登录时设置不同的路由。为什么没有调用回调?
- 如果我不使用
msalObj.handleRedirectCallback(callback);
我会得到一个错误。显然必须设置一些回调函数。 - 如果我仍然被重定向到redirectURI并且可以从 URL 中提取令牌,为什么我需要回调?
我发现最有帮助的来源:
import React from 'react';
import { Configuration, UserAgentApplication } from "msal";
export const LoginPage = (props) => {
const submitHandler = (e) => {
const msalConfig = {
auth: {
clientId: `${process.env.REACT_APP_AAD_CLIENT_ID}`,
authority: `${process.env.REACT_APP_AAD_AUTHORITY}/${process.env.REACT_APP_AAD_TENANT_ID}`,
redirectUri: `${process.env.REACT_APP_AAD_REDIRECT_URI}`,
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: true
}
};
const requestObj = {
scopes: ["user.read"]
};
const callback = (error, response) => {
console.log(response);
props.onRedirect(error, response);
};
e.preventDefault();
const msalObj = new UserAgentApplication(msalConfig);
msalObj.handleRedirectCallback(callback);
msalObj.loginRedirect(requestObj);
};
return (
<>
<h2>Login</h2>
<hr />
<form onSubmit={submitHandler}>
<button type="submit">Login with Azure</button>
</form>
</>
);
};
解决方案
推荐阅读
- python - 将命令 doSomething 和 doSomething() 传递给 Tkinter 按钮有什么区别?
- apache-spark - spark rdd中的elasticsearch查询
- activiti - 类在 activiti 6.0.0 中可用,但在 activiti 7.0.0.SR1 中不可用
- stackdriver - 如何在堆栈驱动程序中创建一个图表,该图表将显示来自日志的 API 标签计数
- tensorflow - 如果 Keras 和 TF 中的 shape 方法为 batch_size 返回 None,如何获取 batch_size?
- c# - 为什么 [1111 1111] 在 Integer 中表示为 -1 而不是 255?
- linux - Ejb 类文件更新问题
- angular - 如何制作一个可重用的组件,每次使用都接受不同的数据?
- vb.net - 如何删除从类 VB.NET 的实例中添加的包装/自定义事件处理程序
- html - {} 格式不包含推送方法。打字稿中的错误