All Projects → dubov94 → vue-jwt-mongo

dubov94 / vue-jwt-mongo

Licence: MIT license
🔐 A simple authentication system for Vue.js

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to vue-jwt-mongo

Meteor-logger-mongo
🍃 Meteor Logging: Store application log messages in MongoDB
Stars: ✭ 20 (+42.86%)
Mutual labels:  mongo
jwt
A fast and simple JWT implementation for Go
Stars: ✭ 144 (+928.57%)
Mutual labels:  jsonwebtoken
JWT-user-auth-API-bolilerplate
Boilerplate for backend API user authentication with JWT
Stars: ✭ 13 (-7.14%)
Mutual labels:  jsonwebtoken
TokenBreaker
JSON RSA to HMAC and None Algorithm Vulnerability POC
Stars: ✭ 51 (+264.29%)
Mutual labels:  jsonwebtoken
java-toolkit
【Released】🛠Java常用的插件API整理以及基于JDK的一些方法封装库,能在不依赖大型框架下快速进行开发(亦可快速用于测试或者脚本类代码编写 - 含数据库相关)。
Stars: ✭ 13 (-7.14%)
Mutual labels:  mongo
DoctrineMongoODMModule
Laminas Module for Doctrine MongoDB ODM
Stars: ✭ 83 (+492.86%)
Mutual labels:  mongo
docker-db-backup
Backup mutltiple databases types on a scheduled basis with many customizable options
Stars: ✭ 302 (+2057.14%)
Mutual labels:  mongo
json-sql-builder2
Level Up Your SQL-Queries
Stars: ✭ 59 (+321.43%)
Mutual labels:  mongo
ts-mongodb-orm
Typescript Orm wrapper for Mongodb
Stars: ✭ 13 (-7.14%)
Mutual labels:  mongo
apollo-instagram-clone
Apollogram | A place where you could share photos, like media, and follow peoples.
Stars: ✭ 24 (+71.43%)
Mutual labels:  jsonwebtoken
mongodb-backup-manager
🌿 A Full-stack MongoDB Backup System.
Stars: ✭ 42 (+200%)
Mutual labels:  mongo
ak-cli
🔖 Collection of useful cli commands
Stars: ✭ 39 (+178.57%)
Mutual labels:  mongo
lodex
Linked Open Data EXperiment
Stars: ✭ 43 (+207.14%)
Mutual labels:  mongo
NLog.Mongo
MongoDB Target for NLog
Stars: ✭ 62 (+342.86%)
Mutual labels:  mongo
mongoose-morgan
An npm package for saving morgan log inside MongoDB
Stars: ✭ 14 (+0%)
Mutual labels:  mongo
py-mongo-sync
Oplog-based data sync tool that synchronizes data from a replica set to another deployment, e.g.: standalone, replica set, and sharded cluster.
Stars: ✭ 102 (+628.57%)
Mutual labels:  mongo
spring-boot-mongodb-react-java-crud
Spring Boot, MongoDB and React.js CRUD Java Web Application Example
Stars: ✭ 33 (+135.71%)
Mutual labels:  mongo
node-server
(@nestjs refactoring)⚡️My personal website's api server, a RESTful application that powered by @eggjs
Stars: ✭ 17 (+21.43%)
Mutual labels:  jsonwebtoken
mongo orm
Mongo ORM: A simple ORM for using MongoDB with the crystal programming language, designed for use with Amber. Based loosely on Granite ORM. Supports Rails-esque models, associations and embedded documents.
Stars: ✭ 32 (+128.57%)
Mutual labels:  mongo
uuid-mongodb
📇 Generates and parses MongoDB BSON UUIDs
Stars: ✭ 94 (+571.43%)
Mutual labels:  mongo

vue-jwt-mongo

License Dependencies Build 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()
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].