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
Autenticación: Vue.js + JWT { Autenticación: Vue.js + JWT } - @ianaya89 1
Slide 2
Slide 2 text
Ignacio Anaya @ianaya89 > Full Stack Developer, Tech Trainer & Speaker > Embajador @Auth0 > Organizador @Vuenos_Aires { Autenticación: Vue.js + JWT } - @ianaya89 2
Slide 3
Slide 3 text
! Por Qué Token? — Sin Estado — Desacoplado — Escalable { Autenticación: Vue.js + JWT } - @ianaya89 3
Slide 4
Slide 4 text
{ Autenticación: Vue.js + JWT } - @ianaya89 4
Slide 5
Slide 5 text
! Por Qué JWT? — Estandard — Seguro — Auto Contenido — JSON ! { Autenticación: Vue.js + JWT } - @ianaya89 5
Slide 6
Slide 6 text
! JWT { Autenticación: Vue.js + JWT } - @ianaya89 6
Slide 7
Slide 7 text
! JWT ! Header { "alg": "HS256", "typ": "JWT" } { Autenticación: Vue.js + JWT } - @ianaya89 7
Slide 8
Slide 8 text
! JWT ! Payload { "sub": "1234567890", "name": "John Doe", "admin": true, "iss": "https://api.com" } { Autenticación: Vue.js + JWT } - @ianaya89 8
Slide 9
Slide 9 text
! JWT ✍ Signature HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret ) { Autenticación: Vue.js + JWT } - @ianaya89 9
Slide 10
Slide 10 text
! JWT ! Caso de Uso — SPA's — Serverless — API's — Mobile — IoT { Autenticación: Vue.js + JWT } - @ianaya89 10
Slide 11
Slide 11 text
{ Autenticación: Vue.js + JWT } - @ianaya89 11
Slide 12
Slide 12 text
! Herramientias — Auth API — vue-router — trae (http library) — localStorage { Autenticación: Vue.js + JWT } - @ianaya89 12
Slide 13
Slide 13 text
Auth Servidor = Seguridad Auth Cliente = UX { Autenticación: Vue.js + JWT } - @ianaya89 13
Slide 14
Slide 14 text
! Auth API — Obtener JWT — Validar JWT — node, express, jsonwebtoken, express-jwt { Autenticación: Vue.js + JWT } - @ianaya89 14
Slide 15
Slide 15 text
! vue-router — SPA's — 1 route = 1 component { Autenticación: 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 } }] }) { Autenticación: Vue.js + JWT } - @ianaya89 16
Slide 17
Slide 17 text
! vue-router Guardian Navs router.beforeEach((to, from, next) => { // resolver si el usuario esta logueado if (!to.meta.isPublic && !isAuthenticated()) { return next('login') } next() }) { Autenticación: Vue.js + JWT } - @ianaya89 17
Slide 18
Slide 18 text
! trae — Libreria HTTP — Fetch Wrapper (con esteroides) — Similar axios — Usa Promises { Autenticación: Vue.js + JWT } - @ianaya89 18
Slide 19
Slide 19 text
! trae Ejemplo import trae from 'trae' trae.baseUrl('http://api:com') trae.get('/', {}) .then(res => console.log(res.data)) .catch(err => console.log('[ERROR]', err)) { Autenticación: Vue.js + JWT } - @ianaya89 19
Slide 20
Slide 20 text
! trae Middlewares trae.before((config) => { const token = '123456789' config.headers['Authentication'] = token return config }) { Autenticación: 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)) { Autenticación: Vue.js + JWT } - @ianaya89 21
Slide 22
Slide 22 text
! Demo — API — Web App { Autenticación: Vue.js + JWT } - @ianaya89 22
Slide 23
Slide 23 text
! Más! — jwt.io — Auth0 — jwt-handbook — trae — vue-router { Autenticación: Vue.js + JWT } - @ianaya89 23
Slide 24
Slide 24 text
Preguntas? { Autenticación: Vue.js + JWT } - @ianaya89 24
Slide 25
Slide 25 text
! Gracias! @ianaya89 { Autenticación: Vue.js + JWT } - @ianaya89 25