1.7.3 • Published 9 months ago

vue-jwt-mongo v1.7.3

Weekly downloads
5
License
MIT
Repository
github
Last release
9 months 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

9 months ago

1.7.2

1 year ago

1.7.1

1 year ago

1.7.0

1 year ago

1.6.8

2 years ago

1.6.5

2 years ago

1.6.4

3 years ago

1.6.3

4 years ago

1.6.2

4 years ago

1.6.1

4 years ago

1.6.0

4 years ago

1.5.0

4 years ago

1.4.6

4 years ago

1.4.7

4 years ago

1.4.5

5 years ago

1.4.4

5 years ago

1.4.3

5 years ago

1.4.2

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.3.6

7 years ago

1.3.4

8 years ago

1.3.3

8 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.0

8 years ago

1.1.0

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago