
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
@forward-software/react-auth
Advanced tools
Simplify your Auth flow when working with React apps
Simplify your Auth flow when working with React apps
This React package allows you to streamline the integration of user authentication flows in any React app by providing a single unified interface
npm install @forward-software/react-auth
Create a new object that implements the AuthClient
interface provided by this library. The interface includes several lifecycle methods, some of which are optional:
import type { AuthClient } from '@forward-software/react-auth';
// The type for your credentials
type AuthCredentials = {
username: string;
password: string;
};
// The type for your tokens
type AuthTokens = {
authToken: string;
refreshToken: string;
};
const authClient: AuthClient<AuthTokens, AuthCredentials> = {
// Optional: Called when the AuthClient gets initialized
onInit: async (): Promise<AuthTokens | null> => {
// Implement the initialization logic for your client
return null;
},
// Optional: Called after initialization completes
onPostInit: async (): Promise<void> => {
// Implement any post-initialization logic
},
// Optional: Called before login starts
onPreLogin: async (): Promise<void> => {
// Implement any pre-login logic
},
// Required: Called when login is requested
onLogin: async (credentials?: AuthCredentials): Promise<AuthTokens> => {
// Implement the logic required to exchange the provided credentials for user tokens
return {
authToken: '...',
refreshToken: '...'
};
},
// Optional: Called after login completes
onPostLogin: async (isSuccess: boolean): Promise<void> => {
// Implement any post-login logic
},
// Optional: Called before refresh starts
onPreRefresh: async (): Promise<void> => {
// Implement any pre-refresh logic
},
// Optional: Called when refresh is requested
// The current tokens are passed as the first argument
onRefresh: async (currentTokens: AuthTokens, minValidity?: number): Promise<AuthTokens> => {
// Implement the logic required to refresh the current user tokens
return {
authToken: '...',
refreshToken: '...'
};
},
// Optional: Called after refresh completes
onPostRefresh: async (isSuccess: boolean): Promise<void> => {
// Implement any post-refresh logic
},
// Optional: Called before logout starts
onPreLogout: async (): Promise<void> => {
// Implement any pre-logout logic
},
// Optional: Called when logout is requested
onLogout: async (): Promise<void> => {
// Implement the logic required to invalidate the current user tokens
},
// Optional: Called after logout completes
onPostLogout: async (isSuccess: boolean): Promise<void> => {
// Implement any post-logout logic
}
};
The AuthClient
instance can be used directly with the createAuth
function:
import { createAuth } from '@forward-software/react-auth';
export const { AuthProvider, useAuthClient, authClient: enhancedAuthClient } = createAuth(authClient);
The createAuth
function returns:
AuthProvider
, the context Provider component that should wrap your app and provide access to your AuthClientuseAuthClient
, the hook to retrieve and interact with your AuthClientauthClient
, the enhanced authentication client instanceThe context Provider component that should wrap your app and provide access to your AuthClient, this component also accepts 2 additional props
ErrorComponent
, displayed when the AuthClient initialization failsLoadingComponent
, displayed while the AuthClient is being initializedThe createAuth
function wraps your AuthClient
implementation with an EnhancedAuthClient
that provides additional functionality:
isInitialized
, a boolean indicating if the AuthClient has been initializedisAuthenticated
, a boolean indicating if the login process has been successful and the user is authenticatedtokens
, the current tokens returned by the login
or the refresh
processinit()
, initialize the AuthClient (N.B. this shouldn't be called if using AuthProvider
- see above)login(credentials)
, start the login processrefresh()
, refresh the current tokenslogout()
, logout and invalidate the current tokenson(eventName, listenerFn)
, subscribe to eventName
events emitted by the AuthClientoff(eventName, listenerFn)
, unsubscribe from eventName
events emitted by the AuthClientsubscribe(() => { })
, subscribe to AuthClient state changesgetSnapshot()
, returns the current state of the AuthClientSetup React components to interact with the AuthClient using the createAuth
function exported by this library
import { createAuth } from '@forward-software/react-auth';
export const { AuthProvider, useAuthClient } = createAuth(authClient);
the createAuth
function returns:
AuthProvider
, the context Provider component that should wrap your app and provide access to your AuthClientuseAuthClient
, the hook to retrieve and interact with your AuthClientThe context Provider component that should wrap your app and provide access to your AuthClient, this component also accepts 2 additional props
ErrorComponent
, displayed when the AuthClient initialization failsLoadingComponent
, displayed while the AuthClient is being initializedThe examples
folder contains some examples of how you can integrate this library in your React app.
This library has been inspired by react-keycloak
and similar libraries.
MIT
Made with ✨ & ❤️ by ForWarD Software and contributors
If you found this project to be helpful, please consider contacting us to develop your React and React Native projects.
FAQs
Simplify your Auth flow when working with React apps
We found that @forward-software/react-auth demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.