国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

laravel – Ideen zur Benutzerauthentifizierung für Vue-Frontend-Single-Page-Projekte
滿天的星座
滿天的星座 2017-05-16 16:47:44
0
5
827

Umgebung:

  • Backend: Laravel + Passport

  • Frontend: Vue 2.0 + Vuex + Vue-Router

Frage:

Kann ich access_token,保存在localStorage中,那么用戶退出登錄的話需要怎么操作?清空localStorage erhalten, nachdem ich mich im Frontend angemeldet habe? Muss ich eine weitere Anfrage an das Backend senden?

Wenn der Benutzer nicht zum Abmelden klickt, sondern den Browser oder das Fenster direkt schlie?t, localStorage里的access_token ist es beim n?chsten Besuch immer noch vorhanden. In diesem Fall ist die Sicherheit nicht sehr gut, oder?

Mein access_token ist ein Jahr lang gültig und wird daher jedes Mal neu generiert, wenn ich mich anmelde. Wie kann dieses Problem gel?st werden?

Bitte geben Sie mir einige Ideen zum Umgang mit der Front-End-Benutzerauthentifizierung ... Vielen Dank! ! !

滿天的星座
滿天的星座

Antworte allen(5)
Peter_Zhu

剛好在做JWT的驗證,用axios和router做驗證,暫時還未完成,先貼一部分代碼參考

axios部分

import Vue from 'vue'
import axios from 'axios'

var http = axios.create({
  baseURL: process.env.API_URL
});

http.init = function () {
  http.interceptors.request.use(config => {
    this.load = true;
    if (localStorage.JWT_TOKEN) {
      config.headers = {'Authorization': localStorage.JWT_TOKEN};
    }
    return config;
  }, err => {
    this.load = false;
    console.error(err);
  });
  http.interceptors.response.use(res => {
    this.load = false;
    if (res.data.code === 1) {
      return res.data.data;
    } else {
      if (res.data.code == 4) {
        localStorage.removeItem('JWT_TOKEN');
        this.$router.push('/Login');
        alert(res.data.msg);
      } else if (res.data.code == 401) {
        localStorage.removeItem('JWT_TOKEN');
        this.$router.push('/Login');
      } else {
        throw new Error(res.data.msg);
      }
    }
  }, err => {
    this.load = false;
    throw new Error(res.data.msg);
  });
}

Vue.prototype.$http = http;

router部分:

import Vue from 'vue'
import Router from 'vue-router'

function include (name) {
  return resolve => require(['components/' + name], resolve);
}

function route (name) {
  return {
    name: name,
    path: name,
    component: include(name)
  }
}

Vue.use(Router);

var router = new Router({
  base: '/admin/',
  mode: 'history',
  routes: [
    {
      name: 'Index',
      path: '/',
      component: include('Index'),
      children: [
        {
          name: 'User',
          path: 'User/:page/:rows',
          component: include('User')
        }
      ]
    },
    {
      name: 'Login',
      path: '/Login',
      component: include('Login')
    },
    {
      path: '*',
      redirect: '/'
    }
  ]
})

router.beforeEach(({name}, from, next) => {
  if (localStorage.JWT_TOKEN) {
    if (name == 'Login') {
      next('/');
    } else {
      next();
    }
  } else {
    if (name == 'Login') {
      next();
    } else {
      next({name: 'Login'});
    }
  }
});

export default router;
PHPzhong

退出時刪除localStorage中的access_token。
可以給Vuex寫個插件,每次commit mutation時,更新一下access_token的刷新時間。
下次登錄時,判斷這個刷新時間,5分鐘前了,就認為登錄信息過期了。

如果不想把access_token放到localStorage中,可以放在Vuex中,每次都需要重新登錄。
重新登錄時,你可以沒必要都重新生成access_token吧。

Peter_Zhu

剛好總結(jié)了一個項目,歡迎star~
【vue+axios】一個項目學(xué)會前端實現(xiàn)登錄攔截

黃舟

認證信息以后臺為準(zhǔn),不管是登錄還是退出都要發(fā)送請求,然后根據(jù)api返回的結(jié)果前端進行操作,如果不記住認證信息用sesionStorage好點

大家講道理

設(shè)置路由的攔截器,攔截除了login和logout的所有頁面,檢查本地變量user是否存在,存在則判斷上次校驗時間,如果超出1分鐘則重新校驗。

router.beforeEach((to, from, next) => {
  // to 和 from 都是 路由信息對象
  //var auth = to.matched[0].default.auth;
  //console.log(to);
  if (to.path =="/login" || to.path =="/logout") {
    next();
  }
  else {
    const user = store.state.system.user;
    if(user){
      const time = new Date().getTime();
      if(time-user.lastCheckTime > 60*1000){ // 如果上次檢查時間大于1分鐘,則調(diào)用服務(wù)端接口判斷session 是否依然有效
        store.dispatch("checkLogin",(error,isLogined)=>{ // 異步檢查是否狀態(tài)有效
          if(error || !isLogined){
            console.warn("登錄超時");
            next({'path':'/login',query:{backUrl:to.fullPath}});
          }
          else{
            next();
          }
        });
      }
      else{
        next();
      }

    }
    else{
      console.warn("需要登錄");
      next({'path':'/login',query:{backUrl:to.fullPath}});
    }
  }
});
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage