Sdílet prostřednictvím


Kurz: Přidání funkčních komponent pro přihlášení a odhlášení v jednostráňové aplikaci React

Platí pro: Zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro tenanty pracovních sil. Tenanti pracovních sil zelený kruh se symbolem bílé značky zaškrtnutí, který označuje následující obsah platí pro externí tenanty. Externí tenanti (další informace)

V tomto kurzu nakonfigurujete jednostránkové aplikace React (SPA) pro ověřování. V první části této série jste vytvořili react spa a připravili jste ho na ověření. V tomto kurzu se naučíte, jak přidat toky ověřování přidáním funkčních komponent knihovny Microsoft Authentication Library (MSAL) do vaší aplikace a vytvořit uživatelsky přívětivé uživatelské rozhraní (UI) vaší aplikace.

V tomto kurzu se naučíte:

  • Přidání funkčních komponent do aplikace
  • Vytvoření způsobu zobrazení informací o profilu uživatele
  • Vytvořte rozložení, které zobrazuje přihlašovací a odhlašovací proces
  • Přidání zážitku přihlášení a odhlášení

Požadavky

Přidání funkčních komponent do aplikace

Funkční komponenty jsou stavebními bloky aplikací React a používají se k vytváření prostředí přihlašování a odhlášení ve vaší aplikaci.

Přidání komponenty NavigationBar

Na navigačním panelu se zobrazí prostředí pro přihlášení a odhlášení aplikace. Proměnná instance dříve nastavená v souboru index.js se použije k volání metod přihlášení a odhlášení, které přesměrují uživatele zpět na přihlašovací stránku.

  1. Otevřete soubor src/components/NavigationBar.jsx a přidejte následující fragment kódu;

    import { AuthenticatedTemplate, UnauthenticatedTemplate, useMsal } from '@azure/msal-react';
    import { Navbar, Button } from 'react-bootstrap';
    import { loginRequest } from '../authConfig';
    
    export const NavigationBar = () => {
        const { instance } = useMsal();
    
        const handleLoginRedirect = () => {
            instance.loginRedirect(loginRequest).catch((error) => console.log(error));
        };
    
        const handleLogoutRedirect = () => {
            instance.logoutRedirect().catch((error) => console.log(error));
        };
    
        /**
         * Most applications will need to conditionally render certain components based on whether a user is signed in or not.
         * msal-react provides 2 easy ways to do this. AuthenticatedTemplate and UnauthenticatedTemplate components will
         * only render their children if a user is authenticated or unauthenticated, respectively.
         */
        return (
            <>
                <Navbar bg="primary" variant="dark" className="navbarStyle">
                    <a className="navbar-brand" href="/">
                        Microsoft identity platform
                    </a>
                    <AuthenticatedTemplate>
                        <div className="collapse navbar-collapse justify-content-end">
                            <Button variant="warning" onClick={handleLogoutRedirect}>
                                Sign out
                            </Button>
                        </div>
                    </AuthenticatedTemplate>
                    <UnauthenticatedTemplate>
                        <div className="collapse navbar-collapse justify-content-end">
                            <Button onClick={handleLoginRedirect}>Sign in</Button>
                        </div>
                    </UnauthenticatedTemplate>
                </Navbar>
            </>
        );
    };
    
  2. Uložte soubor.

Přidání komponenty PageLayout

Komponenta PageLayout se použije k zobrazení hlavního obsahu aplikace a dá se přizpůsobit tak, aby zahrnovala veškerý další obsah, který chcete zobrazit na každé stránce aplikace. Informace o uživatelském profilu jsou zobrazeny předáním dat prostřednictvím props.

  1. Otevřete soubor src/components/PageLayout.jsx a přidejte následující fragment kódu;

    import { AuthenticatedTemplate } from '@azure/msal-react';
    
    import { NavigationBar } from './NavigationBar.jsx';
    
    export const PageLayout = (props) => {
        /**
         * Most applications will need to conditionally render certain components based on whether a user is signed in or not.
         * msal-react provides 2 easy ways to do this. AuthenticatedTemplate and UnauthenticatedTemplate components will
         * only render their children if a user is authenticated or unauthenticated, respectively.
         */
        return (
            <>
                <NavigationBar />
                <br />
                <h5>
                    <center>Welcome to the Microsoft Authentication Library For React Tutorial</center>
                </h5>
                <br />
                {props.children}
                <br />
                <AuthenticatedTemplate>
                    <footer>
                        <center>
                            How did we do?
                            <a
                                href="https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR_ivMYEeUKlEq8CxnMPgdNZUNDlUTTk2NVNYQkZSSjdaTk5KT1o4V1VVNS4u"
                                rel="noopener noreferrer"
                                target="_blank"
                            >
                                {' '}
                                Share your experience!
                            </a>
                        </center>
                    </footer>
                </AuthenticatedTemplate>
            </>
        );
    }
    
  2. Uložte soubor.

Přidání komponenty DataDisplay

Komponenta DataDisplay se použije k zobrazení informací o profilu uživatele a tabulky deklarací identity, které se vytvoří v další části kurzu. Komponenta IdTokenData se použije k zobrazení nároků v ID tokenu.

  1. Otevřete soubor src/components/DataDisplay.jsx a přidejte následující fragment kódu;

    import { Table } from 'react-bootstrap';
    import { createClaimsTable } from '../utils/claimUtils';
    
    import '../styles/App.css';
    
    export const IdTokenData = (props) => {
        const tokenClaims = createClaimsTable(props.idTokenClaims);
    
        const tableRow = Object.keys(tokenClaims).map((key, index) => {
            return (
                <tr key={key}>
                    {tokenClaims[key].map((claimItem) => (
                        <td key={claimItem}>{claimItem}</td>
                    ))}
                </tr>
            );
        });
        return (
            <>
                <div className="data-area-div">
                    <p>
                        See below the claims in your <strong> ID token </strong>. For more information, visit:{' '}
                        <span>
                            <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens#claims-in-an-id-token">
                                docs.microsoft.com
                            </a>
                        </span>
                    </p>
                    <div className="data-area-div">
                        <Table responsive striped bordered hover>
                            <thead>
                                <tr>
                                    <th>Claim</th>
                                    <th>Value</th>
                                    <th>Description</th>
                                </tr>
                            </thead>
                            <tbody>{tableRow}</tbody>
                        </Table>
                    </div>
                </div>
            </>
        );
    };
    
  2. Uložte soubor.

Další kroky