我们的应用程序以标准方式封装在 MSAL 身份验证模板中@azure/msal-react
- 关键代码段总结如下。
我们想使用反应测试库(或类似的东西)来测试应用程序的各个组件。当然,当SampleComponentUnderTest
要通过测试正确呈现 React 组件(如下面的简单测试所示)时,它也必须包装在 MSAL 组件中。
是否有适当的方法来模拟 MSAL 身份验证过程以用于此类目的?无论如何,要在 MSAL 中包装待测组件并直接向该待测组件提供测试用户的凭据吗?任何对有用文档、博客文章、视频等的引用,为我们指明正确的方向,我们将不胜感激。
一个简单的测试
test('first test', () => {
const { getByText } = render(<SampleComponentUnderTest />);
const someText = getByText('A line of text');
expect(someText).toBeInTheDocument();
});
Run Code Online (Sandbox Code Playgroud)
配置
export const msalConfig: Configuration = {
auth: {
clientId: `${process.env.REACT_APP_CLIENT_ID}`,
authority: `https://login.microsoftonline.com/${process.env.REACT_APP_TENANT_ID}`,
redirectUri:
process.env.NODE_ENV === 'development'
? 'http://localhost:3000/'
: process.env.REACT_APP_DEPLOY_URL,
},
cache: {
cacheLocation: 'sessionStorage',
storeAuthStateInCookie: false,
},
system: {
loggerOptions: {
loggerCallback: (level, message, containsPii) => {
if …
Run Code Online (Sandbox Code Playgroud) 现在,我正在使用 MsalProvider根据用户登录的 Microsoft 帐户对用户进行身份验证。安装组件时会发生三件事:
由于我依赖于用户的 Microsoft 帐户凭据,因此所有内容都必须在客户端呈现吗?或者有没有一种方法可以在这里使用getServerSideProps(...)以便它可以 SSR?
我无法理解在尝试使用 Micrsoft Authentication 库 for React (PWA) 对用户进行身份验证时遇到的错误。我需要帮助理解为什么尝试使用 loginPopup 方法登录用户时失败。
在某些情况下,身份验证按预期工作,但在某些情况下却不起作用。任何形式的建议和/或帮助将不胜感激。
以下是我配置 microsoft 身份验证库的方式:
// create the microsoft signin configuration object
const msalConfig = {
auth: {
clientId : process.env.REACT_APP_APP_CLIENT_ID,
authority : "https://login.microsoftonline.com/common/",
redirectUri: window.location.origin,
},
cache: {
cacheLocation: "sessionStorage",
}
};
// initialize the user egent of the application
const msalInstance = new msal.PublicClientApplication(msalConfig);
Run Code Online (Sandbox Code Playgroud)
这是我调用 loginPopup 方法的块,该方法应该返回一个承诺,该承诺在该函数完成时得到满足,或者在出现错误时被拒绝。
const handleMicrosoftSignin = async () => {
try {
// this function does not get fulfilled, hence a 'hash_empty-err'
let msalResponse = …
Run Code Online (Sandbox Code Playgroud) 我正在使用@azure/msal-Angular版本 2 和Angular版本 13。这种情况是,当用户登录应用程序时,如果用户没有访问权限,则需要对用户进行授权,需要从应用程序中注销用户。这将通过调用 msalService.logoutRedirect() 在后台发生。调用注销功能时,将显示 Microsoft 帐户选择屏幕以注销而不是自动注销。有没有办法跳过帐户选择屏幕以退出。
对于我的网站,我通过 microsoft 添加了一个简单的授权页面(使用 @azure/msal-react 库)。您可以在链接https://codesandbox.io/s/wizardly-williams-j4bo42查看演示版本
注册成功后,用户将被重定向到该网站。
我对这份工作很满意。但问题是授权期间收到的访问令牌仅存在一小时。告诉我如何才能自动更新访问令牌。
msal-react ×5
reactjs ×3
msal.js ×2
angular ×1
azure ×1
javascript ×1
msal-angular ×1
next.js ×1