/nodejs-mysql-jwt-authentication

Sign-Up/Sign-In using Node.js, MySql and JWT(JSON Web Token).

Primary LanguageJavaScript

nodejs-mysql-jwt-authentication

Sign-Up/Sign-In using Node.js, MySql and JWT(JSON Web Token).

Software prerequisites:

  1. Node.js
  2. Joi
  3. Mysql
  4. JSON Web Token

Installation

This is a Node.js module available through the npm registry.

Before installing, download and install Node.js. Node.js 0.10 or higher is required.

If this is a brand new project, make sure to create a package.json first with the npm init command.

Installation is done using the npm install command:

$ npm install express

Quick Start

The quickest way to get started with express is to utilize the executable express(1) to generate an application as shown below:

Install the executable. The executable's major version will match Express's:

$ npm install -g express-generator@4

Create the app:

$ express nodejs-mysql-jwt-authentication && cd nodejs-mysql-jwt-authentication

Install dependencies:

$ npm install

Start the server:

$ npm start

View the website at: http://localhost:3000

Joi

Joi is an object schema description language and validator for JavaScript objects. Joi allows you to create blueprints or schemas for JavaScript objects to ensure validation of key information. To get started with joi, you must first install and add it as a dependency to your project:

Installation is done using the npm install command:

$ npm install @hapi/joi

joi-date extensions for advance date rules.

$ npm install @hapi/joi-date

MySql

This is a node.js driver for mysql.

Installation is done using the npm install command:

$ npm install mysql

JSON Web Token | JWT

JSON Web Token is a compact claims representation format intended for space constrained environments such as HTTP Authorization headers and URI query parameters. A JSON web token(JWT) is JSON Object which is used to securely transfer information over the web (between two parties).

Folder Structure

nodejs-mysql-jwt-authentication
|
|
|____app
|    |____AuthComponent
|    |    |____auth.controller.js
|    |    |____auth.model.js
|    |    |____auth.utility.js
|    |    |____auth.validator.js
|    |
|    |____UserComponent
|         |____user.controller.js
|      	  |____user.model.js
|         |____user.utility.js
|         |____user.validator.js
|
|
|____bin
|    |____www
|
|
|____config
|    |____database.js
|
|
|____node_modules 
|
|
|____public
|    |____stylesheets
|    |    |__style.css
|    |
|    |____index.html
|
|
|____routes
|    |____index.js
|    |____users.js
|
|
|____app.js
|
|
|____package.json

Creating database and table

create database TEST;

use TEST;

create table auth(
    authId int primary key auto_increment,
    email varchar(30) unique,
    password varchar(250),
    displayName varchar(50,
    phoneNumber bigint
);