How to Implement JWT Authentication in React?

Secure user authentication is essential in modern web development for safeguarding sensitive data and delivering a seamless user experience. A well-liked and effective technique for handling authentication in web applications is JSON Web Tokens (JWT).

In order to improve security and user access management, we will look at how to integrate JWT authentication in a React application in this article.

What is JWT Authentication?

A condensed and self-contained method of conveying user information between two parties is through JSON Web Tokens (JWT). There are three components to them: a header, a payload, and a signature. Digital signatures on JWT tokens guarantee their integrity and guard against unwanted tampering.

JWT authentication works as follows:

  1. User login: When a user logs in with valid credentials, the server generates a JWT token containing user information, including user ID, roles, and expiration time.
  2. Token storage: The token is securely stored on the client side, typically in the browser’s local storage or an httpOnly cookie.
  3. Authorization: For each subsequent request to protected routes or APIs, the JWT token is included in the request header. The server validates the token’s signature, ensuring the user’s identity and access permissions.

Setting up the Backend Server

You must set up a backend server to handle user authentication and token creation before adding JWT authentication to a React application. This may be accomplished using widely utilized backend technologies like Node.js, Express, and MongoDB.

  1. Create user registration and login endpoints in your backend API to handle user authentication.
  2. Use a library like `jsonwebtoken` to generate and sign JWT tokens upon successful login.
  3. Ensure that your backend server includes CORS headers to allow communication with the React frontend from different domains.

Implementing JWT Authentication in React

Now that we have the backend server ready, let’s proceed with integrating JWT authentication in our React application.

  1. Install necessary packages:

npm install axios react-router-dom

  1. Create an AuthService.js file in your React application to manage authentication-related functions like login and logout.
// AuthService.js import axios from 'axios'; const API_URL = 'http://your-backend-api-url'; class AuthService { login(username, password) { return axios.post(API_URL + '/login', { username, password }) .then((response) => { if (response.data.token) { localStorage.setItem('user', JSON.stringify(response.data)); } return response.data; }); } logout() { localStorage.removeItem('user'); } getCurrentUser() { return JSON.parse(localStorage.getItem('user')); } } export default new AuthService();
Code language: JavaScript (javascript)
  1. Set up a Login component to handle user login in your React application.
// Login.js import React, { useState } from 'react'; import AuthService from './AuthService'; const Login = () => { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const handleLogin = (e) => { e.preventDefault(); AuthService.login(username, password).then((user) => { console.log(user); // You can redirect the user to a protected route here. }); }; return ( <div> <h2>Login</h2> <form onSubmit={handleLogin}> <input type="text" placeholder="Username" value={username} onChange={(e) => setUsername(e.target.value)} /> <input type="password" placeholder="Password" value={password} onChange={(e) => setPassword(e.target.value)} /> <button type="submit">Login</button> </form> </div> ); }; export default Login;
Code language: JavaScript (javascript)
  1. Create a ProtectedRoute component to protect specific routes that require authentication.
// ProtectedRoute.js import React from 'react'; import { Route, Redirect } from 'react-router-dom'; import AuthService from './AuthService'; const ProtectedRoute = ({ component: Component, ...rest }) => { const user = AuthService.getCurrentUser(); return ( <Route {...rest} render={(props) => user ? <Component {...props} /> : <Redirect to="/login" /> } /> ); }; export default ProtectedRoute;
Code language: JavaScript (javascript)
  1. Set up the React Router in your App.js file.
// App.js import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import Login from './Login'; import ProtectedRoute from './ProtectedRoute'; const Home = () => <h2>Welcome to the Home Page!</h2>; const App = () => { return ( <Router> <div> <Switch> <Route path="/login" component={Login} /> <ProtectedRoute path="/" component={Home} /> </Switch> </div> </Router> ); }; export default App;
Code language: JavaScript (javascript)

Conclusion

For managing user authentication and authorization in React apps, JWT authentication is a strong and secure technique. By implementing JWT authentication as described in this blog, you can safeguard sensitive routes and APIs and make sure that only authorized users can access limited resources within your application.

This improves user experience and overall security, strengthening the stability and dependability of your React application.


Posted

in

by

Recent Post

  • Behind the Scenes: Building a Multi-Agent System to Handle 80% of Support Tickets Autonomously

    Let’s face it—support tickets are the silent killers of productivity. Behind every “Where’s my order?” or “I forgot my password” lies a bloated system of repetitive manual work, overworked agents, and frustrated customers stuck in virtual queues. Now, consider this: what if 80% of those tickets never needed a human in the first place? In […]

  • Agentic AI Explained: Definition, Benefits, Challenges and Use Cases

    Artificial Intelligence (AI) has evolved significantly, transitioning from rule-based systems to more dynamic, learning-based models. Among the latest advancements is Agentic AI, an AI paradigm that enhances autonomy, decision-making, and self-improvement capabilities. Unlike traditional AI, which primarily follows predefined rules or models, Agentic AI exhibits goal-oriented behavior, adapts to complex environments, and makes decisions with […]

  • AI in payment: Key applications, advantages, and regulatory considerations

    The financial landscape is undergoing a profound transformation, driven by the rapid advancements in artificial intelligence (AI). From enhancing security to streamlining transactions, AI is revolutionizing how we make payments, making the process faster, safer, and more seamless. The global AI in payments market is projected to reach an impressive USD 12.7 billion by 2026, […]

  • Generative AI for IT: Integration approaches, use cases, challenges, ROI evaluation and future outlook

    Generative AI is a game-changer in the IT sector, driving significant cost reductions and operational efficiencies. According to a BCG analysis, Generative AI (GenAI) has the potential to deliver up to 10% savings on IT spending—a transformation that is reshaping multiple facets of technology. The impact is especially profound in application development, where nearly 75% […]

  • Generative AI in Manufacturing: Integration approaches, use cases and future outlook

    Generative AI is reshaping manufacturing by providing advanced solutions to longstanding challenges in the industry. With its ability to streamline production, optimize resource allocation, and enhance quality control, GenAI offers manufacturers new levels of operational efficiency and innovation. Unlike traditional automation, which primarily focuses on repetitive tasks, GenAI enables more dynamic and data-driven decision-making processes, […]

  • Generative AI in Healthcare: Integration, use cases, challenges, ROI, and future outlook

    Generative AI (GenAI) is revolutionizing the healthcare industry, enabling enhanced patient care, operational efficiency, and advanced decision-making. From automating administrative workflows to assisting in clinical diagnoses, GenAI is reshaping how healthcare providers, payers, and technology firms deliver services. A Q1 2024 survey of 100 US healthcare leaders revealed that over 70% have already implemented or […]

Click to Copy