1.7.3 • Published 3 years ago

vue-jwt-mongo v1.7.3

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

vue-jwt-mongo

License Coverage

A package for bootstrapping a simple JSON Web Token-based authentication system using Vue.js, MongoDB and Express.js.

Installation

npm install vue-jwt-mongo --save

Server

const app = require('express')()

const vjmServer = require('vue-jwt-mongo').Server({
  mongoUrl: 'mongodb://localhost/db',
  jwtSecret: 'shhh'
})

Options

  • mongoUrl (mandatory): an address of the Mongo database.
  • jwtSecret (mandatory): a secret key for token generation.
  • userModelName: a name for the mongoose model storing encoded user credentials.
    • Defaults to 'User'.
  • jwtExpiresIn: token expiration time in seconds.

Endpoints

registerHandler

Expects { username, password } in the request body. Returns an empty response.

The password is salted and hashed via passport-local-mongoose.

app.post('/auth/register', vjmServer.registerHandler)

loginHandler

Expects { username, password } in the request body. Returns a string the token.

app.post('/auth/login', vjmServer.loginHandler)

refreshHandler

Expects an empty request body and Authorization: Bearer {token} as one of the HTTP headers. Returns a string with a new token if the original token is valid.

app.post('/auth/refresh', vjmServer.refreshHandler)

Protector

jwtProtector ensures that the incoming request has a valid token. Expects Authorization: Bearer {token} as one of the HTTP headers.

app.get('/protected', vjmServer.jwtProtector, (request, response) => {
    console.log(request.user.username)
})

Client

Vue.use(require('vue-resource'))
Vue.use(require('vue-jwt-mongo').Client, {
  /* options, if any */
})

Options

  • registerEndpoint: the server's endpoint for registration requests.
    • Defaults to '/auth/register'.
  • loginEndpoint: the server's endpoint for authentication requests.
    • Defaults to '/auth/login'.
  • refreshEndpoint: the server's endpoint for refreshing the token.
    • Defaults to '/auth/refresh'.
  • storageKey: a localStorage key used for saving the token.
    • Defaults to 'jsonwebtoken'.
  • bearerLexem: a lexem prepending tokens in Authorization headers.
    • Defaults to 'Bearer ' (extra space intended).

Requests

Authentication

All of the following requests return vue-resource Promises, so one can get an idea of the callback structure here.

this.$auth.register('login', 'password')
this.$auth.logIn('login', 'password')
this.$auth.refresh()

Authorization

If bearer: true is passed then Authorization: Bearer {token} is added as a header.

this.$http.get('/protected', { bearer: true }).then(response => {
    console.log(response)
})

Token

isLoggedIn

Returns true if the saved token is valid and false otherwise.

let isLoggedIn = this.$auth.isLoggedIn()

getToken

Returns a string if the saved token is valid and null otherwise.

this.$auth.getToken()

logOut

Purges the saved token.

this.$auth.logOut()
1.7.3

3 years ago

1.7.2

3 years ago

1.7.1

3 years ago

1.7.0

3 years ago

1.6.8

3 years ago

1.6.5

4 years ago

1.6.4

5 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.0

6 years ago

1.4.6

6 years ago

1.4.7

6 years ago

1.4.5

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

7 years ago

1.4.1

7 years ago

1.4.0

7 years ago

1.3.6

9 years ago

1.3.4

9 years ago

1.3.3

9 years ago

1.3.2

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago