Skip to content

devlopersabbir/dev-auth-middleware-jwt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npm npm GitHub issues GitHub stars npm

dev-auth-middleware-jwt

A powerful JWT authentication middleware for Node.js to create accesstoken, refreshtoken and also able to validate both tokens.

This middleware provides a simple and secure way to authenticate HTTP requests using JSON Web Tokens (JWTs). It can be easily integrated into any Node.js application and supports a variety of authentication strategies, including bearer tokens and cookie-based authentication. Finally, this library will help us to generate access & refresh tokens also able to validate For more information on how to use the middleware, please refer to the documentation.

INSTALLATION

$ npm i dev-auth-middleware-jwt --save

or if you are use yarn then just run this code

$ yarn add dev-auth-middleware-jwt --save

REQUIRED TASK

  • We have to create a .env file in the root project directory to store our all of environment variables.
  • Create all variables following the down below code example.
ACCESS_TOKEN_SECRET=key //use your secret key
ACCESS_TOKEN_EXPIRES_IN=1d //modify as you need eg: 60s, 1m, 1h, 7d

REFRESH_TOKEN_SECRET=key //use your secret key
REFRESH_TOKEN_EXPIRES_IN=1d //modify as you need eg: 60s, 1m, 1h, 7d
  • That is required

USAGES

Firstly, just import this package using

import { JWT, Validate } from "dev-auth-middleware-jwt";

Now it's ready to use.

If you want you try this template. I just try to explement this package features and show...

import express, { Request, Response } from "express";
import dotenv from "dotenv";
import { JwtPayload } from "jsonwebtoken";
dotenv.config();
import { JWT, Validate } from "dev-auth-middleware-jwt";

declare module "express" {
  interface Request {
    user?: any;
  }
}

const app = express();
app.use(express.json());

let refreshTokens: any = [];
app.post("/", async (req: Request, res: Response) => {
  const { username, password } = req.body;
  try {
    const payload: JwtPayload = {
      id: "4234124123423535",
      username,
    };
    const accessToken = JWT.generateAccessToken(payload);
    const refreshToken = JWT.generateRefreshToken(payload);
    refreshTokens.push(refreshToken);

    // response
    res.status(200).json({
      data: {
        accessToken,
        refreshToken,
      },
    });
  } catch (error) {
    console.log(error);
    res.status(500).json({ message: "Something went wrong!", error });
  }
});

app.post("/pro", Validate.accessToken, async (req: Request, res: Response) => {
  if (req.user) {
    res.json({
      data: {
        user: req.user,
      },
    });
  } else {
    res.json({ data: { message: "User not found" } });
  }
});

app.post(
  "/get-ref",
  Validate.refreshToken,
  async (req: Request, res: Response) => {
    console.log(req.user);
    if (req.user) {
      res.json({
        data: {
          user: req.user,
        },
      });
    } else {
      res.json({ data: { message: "User not found" } });
    }
  }
);

const PORT = process.env.PORT || 4000;
app.listen(PORT, () => console.log(`🚀 Server is running at ${PORT}`));

Author

This package was created by Sabbir Hossain Shuvo. And the GitHub profile is https://github.com/devlopersabbir.

LICENSE

MIT

For support just Buy Me A Coffee https://www.buymeacoffee.com/devlopersabbir

Contributing

If you would like to contribute to this project, please follow these steps:

  1. Fork this repository.
  2. Clone your forked repository:
  3. For your changes:
  4. Make your changes, commit them, and push them to your forked repository:
  5. Create a pull request on this repository.

About

Auth middleware with JWT refresh token

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published