vue 기반 token 인증 을 위 한 인 스 턴 스 코드

vue-koa2-token
vue 기반 token 검증
앞부분(axios 설정 Authorization)

import axios from 'axios'
import store from '../store'
import router from '../router'
//    axios   
axios.defaults.timeout = 6000; //6000     
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
//    axios  
const instance = axios.create();
instance.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
axios.interceptors.request.use = instance.interceptors.request.use;
//request   
instance.interceptors.request.use(
  config => {
    //           vuex  token,               
    if(store.state.token){
      config.headers.Authorization = `token ${store.state.token}`;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  }
);
//respone   
instance.interceptors.response.use(
  response => {
    return response;
  },
  error => { //    2XX        ,     
    if(error.response){
      switch(error.response.status){
        case 401:
          store.dispatch('UserLogout'); //   token  ,   
          router.replace({ //       
            path: 'login',
            query: { redirect: router.currentRoute.fullPath } //       path    ,           
          });
      }
    }
    return Promise.reject(error.response);
  }
);
export default instance;
 그리고 경로 파일 에서

 //            
router.beforeEach((to, from, next) => {
 //  store   token
 let token = store.state.token;
 //          requiresAuth
 if(to.meta.requiresAuth){
  if(token){
   next();
  }else{
   next({
    path: '/login',
    query: { redirect: to.fullPath } //         path(    )    ,               
   });
  }
 }else{
  next();//    token,      
 }
});
백 엔 드(node)에서 token 을 검증 해 야 할 경로 에 중간 부품 을 봉 인 했 습 니 다.

 router.get('/dosh',checkToken,User.dosh)
const jwt = require('jsonwebtoken');
1.jsonwebtoken 으로 token 만 들 기

const jwt = require('jsonwebtoken');
//   :           ,      id(   user_id)  JWT Payload     
module.exports = function(user_id){
  const token = jwt.sign({
    user_id: user_id
  }, 'sinner77', {
    expiresIn: '3600s' //       60 。  decode  token            :   token    +     
  });
  return token;
};
2.전단 요청,인터페이스 검사

//  token    
module.exports = async ( ctx, next ) => {
  if(ctx.request.header['authorization']){
    let token = ctx.request.header['authorization'].split(' ')[1];
    //  token
    let decoded = jwt.decode(token, 'sinner77');
    //console.log(decoded);    :{ user_id: '123123123', iat: 1494405235, exp: 1494405235 }
    if(token && decoded.exp <= new Date()/1000){
      ctx.status = 401;
      ctx.body = {
        message: 'token  '
      };
    }else{
      //       ,            
      return next();
    }
  }else{
    ctx.status = 401;
    ctx.body = {
      message: '  token'
    }
  }
};
코드 관리 github 환영 star
https://github.com/yxl720/vue-koa2-token
총결산
위 에서 말씀 드 린 것 은 vue 를 바탕 으로 token 인증 을 실현 하 는 인 스 턴 스 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기