Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Vue.js ❤ JWT { Vue.js ❤ JWT } - @ianaya89 1
Slide 2
Slide 2 text
Ignacio Anaya @ianaya89 > Full Stack Developer, Tech Trainer & Speaker > @Auth0 Ambassador > @Vuenos_Aires Organizer { Vue.js ❤ JWT } - @ianaya89 2
Slide 3
Slide 3 text
! Why Tokens? 4 Stateless 4 Decoupled 4 Scalable { Vue.js ❤ JWT } - @ianaya89 3
Slide 4
Slide 4 text
{ Vue.js ❤ JWT } - @ianaya89 4
Slide 5
Slide 5 text
! Why JWT? 4 Standard 4 Secure 4 Self Contained 4 JSON ! { Vue.js ❤ JWT } - @ianaya89 5
Slide 6
Slide 6 text
JWT { Vue.js ❤ JWT } - @ianaya89 6
Slide 7
Slide 7 text
JWT ! Header { "alg": "HS256", "typ": "JWT" } { Vue.js ❤ JWT } - @ianaya89 7
Slide 8
Slide 8 text
JWT ! Payload { "sub": "1234567890", "name": "John Doe", "admin": true, "iss": "https://api.com" } { Vue.js ❤ JWT } - @ianaya89 8
Slide 9
Slide 9 text
JWT ✍ Signature HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret ) { Vue.js ❤ JWT } - @ianaya89 9
Slide 10
Slide 10 text
JWT ! Use Cases 4 SPA's 4 Serverless 4 API's 4 Mobile 4 IoT { Vue.js ❤ JWT } - @ianaya89 10
Slide 11
Slide 11 text
{ Vue.js ❤ JWT } - @ianaya89 11
Slide 12
Slide 12 text
! What we need? 4 Auth Api 4 vue-router 4 trae (http library) 4 localStorage { Vue.js ❤ JWT } - @ianaya89 12
Slide 13
Slide 13 text
Server Auth = Auth Client Auth = UX { Vue.js ❤ JWT } - @ianaya89 13
Slide 14
Slide 14 text
! Auth API 4 Send credentials & get JWT 4 Validate JWT 4 node, express, jsonwebtoken, express-jwt { Vue.js ❤ JWT } - @ianaya89 14
Slide 15
Slide 15 text
! vue-router 4 SPA's 4 1 route = 1 component { Vue.js ❤ JWT } - @ianaya89 15
Slide 16
Slide 16 text
! vue-router Routes Meta const router = new Router({ routes: [{ path: '/', component: Home }, { path: '/login', component: Login, meta: { isPublic: true } }] }) { Vue.js ❤ JWT } - @ianaya89 16
Slide 17
Slide 17 text
! vue-router Guardian Navs router.beforeEach((to, from, next) => { // resolve if user is authenticated... if (!to.meta.isPublic && !isAuthenticated()) { return next('login') } next() }) { Vue.js ❤ JWT } - @ianaya89 17
Slide 18
Slide 18 text
! trae 4 HTTP Library 4 Fetch Wrapper with steroids 4 Similar axios 4 Promised Based { Vue.js ❤ JWT } - @ianaya89 18
Slide 19
Slide 19 text
! trae Example import trae from 'trae' trae.baseUrl('http://api:com') trae.get('/', {}) .then(res => console.log(res.data)) .catch(err => console.log('[ERROR]', err)) { Vue.js ❤ JWT } - @ianaya89 19
Slide 20
Slide 20 text
trae Middlewares trae.before((config) => { const token = '123456789' config.headers['Authentication'] = token return config }) { Vue.js ❤ JWT } - @ianaya89 20
Slide 21
Slide 21 text
localStorage trae.post('/auth', { email, password }) .then(res => { localStorage.token = res.data localStorage.user = atob(res.data.split('.')[1]) }) .catch(err => console.log('[ERROR]', err)) { Vue.js ❤ JWT } - @ianaya89 21
Slide 22
Slide 22 text
Demo { Vue.js ❤ JWT } - @ianaya89 22
Slide 23
Slide 23 text
More? { Vue.js ❤ JWT } - @ianaya89 23
Slide 24
Slide 24 text
More! 4 jwt.io 4 Auth0 4 jwt-handbook 4 trae { Vue.js ❤ JWT } - @ianaya89 24
Slide 25
Slide 25 text
Questions { Vue.js ❤ JWT } - @ianaya89 25
Slide 26
Slide 26 text
! Thanks! @ianaya89 { Vue.js ❤ JWT } - @ianaya89 26