The configuration steps for using Auth0 in a React project and integrating into a backend service are as follows:
1. Create an application in Auth0
- Log in to Auth0 Dashboard.
- Navigate to the Applications section and click Create Application.
- Name your application and select the application type "Single Page Web Applications".
- Click “Create”.
2. Configure Auth0 application
1. On the application settings page, set the following fields:
- Allowed Callback URLs: http://localhost:3000/callback (local address of the development environment)
- Allowed Logout URLs: http://localhost:3000 (local address of the development environment)
- Allowed Web Origins: http://localhost:3000 (local address of the development environment)
2. Save the changes.
3. Install Auth0 SDK in React project
In the React project root directory, open the terminal and run:
npm install @auth0/auth0-react
4. Configure Auth0 in React project
Create a name calledauth_config.json
file containing the following content:
{ "domain": "YOUR_AUTH0_DOMAIN", "clientId": "YOUR_AUTH0_CLIENT_ID", "audience": "YOUR_API_IDENTIFIER" }
existsrc
Create a directory calledFile:
import React from "react"; import { useNavigate } from "react-router-dom"; import { Auth0Provider } from "@auth0/auth0-react"; import config from "./auth_config.json"; const Auth0ProviderWithHistory = ({ children }) => { const navigate = useNavigate(); const onRedirectCallback = (appState) => { navigate(appState?.returnTo || ); }; return ( <Auth0Provider domain={} clientId={} audience={} redirectUri={} onRedirectCallback={onRedirectCallback} > {children} </Auth0Provider> ); }; export default Auth0ProviderWithHistory;
existsrc/
Use in the fileAuth0ProviderWithHistory
Package Application:
import React from 'react'; import ReactDOM from 'react-dom'; import { BrowserRouter } from 'react-router-dom'; import Auth0ProviderWithHistory from './auth0-provider-with-history'; import App from './App'; ( <BrowserRouter> <Auth0ProviderWithHistory> <App /> </Auth0ProviderWithHistory> </BrowserRouter>, ('root') );
5. Use Auth0 in React component
useuseAuth0
Hook access Auth0 authentication status:
import React from "react"; import { useAuth0 } from "@auth0/auth0-react"; const Profile = () => { const { user, isAuthenticated, isLoading } = useAuth0(); if (isLoading) { return <div>Loading...</div>; } return ( isAuthenticated && ( <div> <img src={} alt={} /> <h2>{}</h2> <p>{}</p> </div> ) ); }; export default Profile;
Create login and logout buttons:
import React from "react"; import { useAuth0 } from "@auth0/auth0-react"; const LoginButton = () => { const { loginWithRedirect } = useAuth0(); return <button onClick={() => loginWithRedirect()}>Log In</button>; }; const LogoutButton = () => { const { logout } = useAuth0(); return <button onClick={() => logout({ returnTo: })}>Log Out</button>; }; export { LoginButton, LogoutButton };
6. Integrate into back-end services
Verify the JWT token in the backend service. Take Go as an example, use/auth0/go-jwt-middleware
and/form3tech-oss/jwt-go
:
package main import ( "net/http" "/auth0/go-jwt-middleware" "/dgrijalva/jwt-go" "/gorilla/mux" ) var myJwtMiddleware = ({ ValidationKeyGetter: func(token *) (interface{}, error) { audience := "YOUR_API_IDENTIFIER" checkAud := .().VerifyAudience(audience, false) if !checkAud { return token, ("invalid audience") } iss := "https://YOUR_AUTH0_DOMAIN/" checkIss := .().VerifyIssuer(iss, false) if !checkIss { return token, ("invalid issuer") } cert, err := getPemCert(token) if err != nil { return nil, err } return ([]byte(cert)) }, SigningMethod: jwt.SigningMethodRS256, }) func main() { r := () ("/api/private", ((func(w , r *) { ([]byte("This is a private endpoint")) }))) (":8080", r) } func getPemCert(token *) (string, error) { // Implementation to get the PEM certificate }
In a React project, usegetAccessTokenSilently
Methods to obtain access token and add it to the API requestedAuthorization
head:
import React from "react"; import { useAuth0 } from "@auth0/auth0-react"; import axios from "axios"; const CallApi = () => { const { getAccessTokenSilently } = useAuth0(); const callApi = async () => { try { const token = await getAccessTokenSilently(); const response = await ("http://localhost:8080/api/private", { headers: { Authorization: `Bearer ${token}`, }, }); (); } catch (error) { (error); } }; return <button onClick={callApi}>Call API</button>; }; export default CallApi;
Through the above steps, you can integrate Auth0 into your React project and interact with your backend services.
This is the article about the configuration steps for using Auth0 in a React project and integrating it into a backend service. For more related React content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!