Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@websanova/vue-auth
Advanced tools
Vue.js token based authentication plugin. Supports simple token based and Json Web Tokens (JWT) authentication.
Vue.js token based authentication plugin. Supports simple token based and JSON Web Tokens (JWT) authentication.
Note this is the new name for the formerly named vue-jwt-auth
. Since it's likely this package will expand with potentially more authentication options.
Vue 2.x is not currently supported due to many inconsistencies between libraries.
v1.0.0-dev
version, check the change log below.v1.0.0
version has been started, however it is still very much in dev mode.> sudo npm install @websanova/vue-auth
Vue.use(require('@websanova/vue-auth'), {
rolesVar: 'type'
});
NOTE: If you do not set your router as Vue.router = new VueRouter()
then you will need to feed the router
in directly as an optional third argument.
var router = new VueRouter();
Vue.use(Auth, options, router);
To run the front end part of the demo just install and run. The demo runs on a publicly available server so just the front end needs run.
app.js
demo file to a different server for personal testing.> sudo npm install
> sudo npm run demo
There is a demo server already available in the demo. If a different path is required it must be set in the demo/app.js
file.
To run the build:
> sudo webpack
The vue-auth
plugin works with the vue-router
plugin. Setting an auth
field in the router mapping section will set access to that route.
Vue.router.map({
'/admin': {
auth: 'admin',
component: require('./Admin')
},
'/manage': {
auth: ['admin', 'manager'],
component: require('./Manage')
},
'/account': {
auth: true,
component: require('./Account')
},
'/login': {
auth: false,
component: require('./Login')
},
'/contact': {
component: require('./Contact')
}
});
true
false
undefined
Array
String
roles
variable can be set in the options.Object
$auth.check({some: 'name'})
where the value can be a String
or Array
.These are all methods available in the vue app via $auth
.
success
and error
functions will receive proper context from currently called component.<div v-if="$auth.ready()">
<vue-router></vue-router>
</div>
<div v-if="!$auth.ready()">
Site loading...
</div>
<div>
{{ $auth.user().email }}
</div>
<a v-if="!$auth.check()" v-link="'/login'">login</a>
<a v-if="$auth.check('admin')">admin</a>
<a v-if="$auth.check(['admin', 'manager')]">manage</a>
<a v-if="$auth.check()" v-on:click="$auth.logout()">logout</a>
<a v-if="$auth.other()" v-on:click="logoutOther()">logout other</a>
this.$auth.disableOther();
this.$http.get('users'); // Will run as admin.
this.$auth.enableOther();
other
and default
will actually return anything.var token = this.$auth.token();
var token = this.$auth.token('other');
var token = this.$auth.token('default');
this.$auth.fetch({
params: {},
success: function () {},
error: function () {},
// etc...
});
expiredToken
option method.expiredToken
and token
to write custom refreshes.expiredToken
method and return boolean
.this.$auth.refresh({
params: {},
success: function () {},
error: function () {},
// etc...
});
autoLogin
parameter to attempt login directly after register.rememberMe
parameter when used in conjunction with autoLogin
equal to true
.redirect
parameter which is passed directly to router.this.$auth.register({
params: {},
success: function () {},
error: function () {},
autoLogin: true,
rememberMe: true,
redirect: {name: 'account'},
// etc...
});
rememberMe
parameter.redirect
parameter which is passed directly to router.this.$auth.login({
params: {},
success: function () {},
error: function () {},
rememberMe: true,
redirect: '/account',
// etc...
});
redirect
parameter which is passed directly to router.makeRequest
parameter which must be set to true
to send request to api. Otherwise the logout just happens locally by deleting tokens.this.$auth.logout({
makeRequest: true,
params: {},
success: function () {},
error: function () {},
redirect: '/login',
// etc...
});
redirect
parameter which is passed directly to router.this.$auth.loginOther({
params: {},
success: function () {},
error: function () {},
redirect: {name: 'account'},
// etc...
});
redirect
parameter which is passed directly to router.makeRequest
parameter same as logout
method.this.$auth.logoutOther({
makeRequest: true,
params: {},
success: function () {},
error: function () {},
redirect: {path: '/admin'},
// etc...
});
code
parameter which should be set to true
when the code is set.provider
parameter which hooks into data for third party.facebookData
, facebookOath2Data
. Check options section for more info.redirect
parameter which is passed directly to router.if (this.$route.query.code) {
this.$auth.oauth2({
code: true,
provider: 'facebook',
params: {
code: this.code
},
success: function(res) {},
error: function (res) {}
redirect: {path: '/account'},
// etc
});
}
else {
this.$auth.oauth2({
provider: 'facebook'
});
}
Pretty much all methods are overrideable now in case there any specific issues with a particular version of Vue.
'token'
'auth-token'
'Authorization'
'bearer'
'basic'
'roles'
{path: '/login'}
{path: '/403'}
{path: '/404'}
false
).{url: 'auth/register', method: 'POST', redirect: '/login'}
{url: 'auth/login', method: 'POST', redirect: '/'}
{url: 'auth/logout', method: 'POST', redirect: '/', makeRequest: false}
makeRequest
is set to true.{url: 'auth/login', method: 'POST'}
{url: 'auth/user', method: 'GET'}
{url: 'auth/refresh', method: 'GET', atInit: true}
{url: 'auth/login-other', method: 'POST', redirect: '/'}
{url: 'auth/logout-other', method: 'POST', redirect: '/admin', makeRequest: false}
{url: 'auth/facebook', method: 'POST', redirect: '/'}
{url: 'auth/google', method: 'POST', redirect: '/'}
{url: 'https://www.facebook.com/v2.5/dialog/oauth', redirect: function () { return this.options.getUrl() + '/login/facebook'; }, clientId: '', scope: 'email'}
oauth2()
method or in the plugin options on init.{url: 'https://accounts.google.com/o/oauth2/auth', redirect: function () { return this.options.getUrl() + '/login/google'; }, clientId: '', scope: 'https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read'}
_getUrl
_cookieDomain
rememberMe
option._parseUserData
_tokenExpired
false
when creating a custom solution._check
check
method.These are all function related directly to Vue that sort of acts like a driver. It makes it easier to deal with incompatibilities between Vue versions.
_init
_bind
_watch
_getHeaders
_setHeaders
_bindData
_interceptor
_beforeEach
_invalidToken
_routerReplace
_routerGo
_httpData
_http
vue-auth
from vue-jwt-auth
.@websanova/vue-auth
now.http
method. So it can be called with whatever parameters the method supports.success
and error
functions will contain proper context from Vue component./path
or {name: 'object'}
etc.register
call with the option to auto login on success.auth
parameter in routes and the check()
method now support objects for checking more complicated roles.other
now.disabledOther
and enableOther
.login
, oauth2
, etc all have their own default parameters now.google
and facebook
functions just use oauth2
method now.logout
method can now perform an api request if makdeRequest
is set to true.bearer
and basic
.other
or default
will return the appropriate token.FAQs
A simple light-weight authentication library for Vue.js
The npm package @websanova/vue-auth receives a total of 4,035 weekly downloads. As such, @websanova/vue-auth popularity was classified as popular.
We found that @websanova/vue-auth demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.