Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menggunakan penghalaan untuk mengawal kebenaran halaman secara dinamik dalam Vue?

Bagaimana untuk menggunakan penghalaan untuk mengawal kebenaran halaman secara dinamik dalam Vue?

PHPz
PHPzasal
2023-07-21 19:09:161181semak imbas

Bagaimana untuk menggunakan penghalaan untuk mencapai kawalan dinamik kebenaran halaman dalam Vue?

Apabila menggunakan Vue untuk membangunkan aplikasi bahagian hadapan, selalunya perlu mengawal kebenaran halaman, iaitu halaman tertentu hanya boleh diakses oleh pengguna tertentu. Untuk mencapai kawalan dinamik ke atas kebenaran halaman, kami boleh menggunakan fungsi penghalaan dalam Vue untuk pemprosesan.

1. Buat fail konfigurasi penghalaan

Mula-mula, buat fail baharu dalam folder penghalaan projek dan namakannya router.js. Dalam fail ini, kami boleh mengedit maklumat konfigurasi penghalaan. Berikut ialah contoh fail konfigurasi penghalaan:

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

// 引入需要进行权限控制的页面组件
import HomePage from '../components/HomePage.vue';
import AdminPage from '../components/AdminPage.vue';
import UserPage from '../components/UserPage.vue';

Vue.use(Router);

const router = new Router({
  routes: [
    // 首页
    {
      path: '/',
      name: 'HomePage',
      component: HomePage,
      meta: {
        requiresAuth: true // 需要权限验证
      }
    },
    // 管理员页面
    {
      path: '/admin',
      name: 'AdminPage',
      component: AdminPage,
      meta: {
        requiresAuth: true, // 需要权限验证
        role: 'admin' // 需要角色为admin
      }
    },
    // 普通用户页面
    {
      path: '/user',
      name: 'UserPage',
      component: UserPage,
      meta: {
        requiresAuth: true, // 需要权限验证
        role: 'user' // 需要角色为user
      }
    },
  ]
});

export default router;

Dalam fail konfigurasi ini, kami mula-mula memperkenalkan Vue dan penghala, dan menggunakan kaedah penggunaan Vue untuk mendaftarkan pemalam penghalaan. Kemudian, kami mentakrifkan tiga laluan, iaitu halaman utama, halaman pentadbir dan halaman pengguna biasa Laluan akses mereka adalah '/', '/admin' dan '/user' masing-masing. Setiap laluan mempunyai medan meta, yang mengandungi maklumat kebenaran yang diperlukan oleh laluan. Antaranya, medan requireAuth menunjukkan sama ada laluan memerlukan pengesahan kebenaran dan medan peranan menunjukkan peranan yang diperlukan oleh laluan.

2. Sediakan pengawal navigasi global

Seterusnya, kita perlu menyediakan pengawal navigasi global dalam fail kemasukan Vue untuk pengesahan kebenaran semasa penghalaan. Berikut ialah contoh fail entri:

import Vue from 'vue';
import App from './App.vue';
import router from './router';

Vue.config.productionTip = false;

// 设置全局导航守卫
router.beforeEach((to, from, next) => {
  // 检查该路由是否需要进行权限验证
  if (to.meta.requiresAuth) {
    const role = localStorage.getItem('role'); // 获取当前用户的角色信息
    // 检查用户的角色是否满足路由所需的角色
    if (!role || to.meta.role !== role) {
      // 如果用户的角色不满足路由所需的角色,则跳转到登录页面或无权限页面
      next('/login'); // 跳转到登录页面
    } else {
      next(); // 跳转到该路由
    }
  } else {
    next(); // 跳转到该路由
  }
});

new Vue({
  router,
  render: (h) => h(App),
}).$mount('#app');

Dalam fail entri ini, kami mula-mula memperkenalkan Vue, komponen App dan penghala, dan mencipta tika Vue. Kemudian, kami menetapkan pengawal navigasi global melalui kaedah penghala.beforeEach. Dalam pengawal navigasi, kami mula-mula menyemak sama ada laluan memerlukan pengesahan kebenaran Jika pengesahan diperlukan, dapatkan maklumat peranan pengguna semasa. Kemudian, kami menyemak sama ada peranan pengguna memenuhi peranan yang diperlukan oleh laluan Jika tidak, kami melakukan pemprosesan yang sepadan, seperti melompat ke halaman log masuk atau halaman yang tidak dibenarkan. Jika peranan pengguna memenuhi peranan yang diperlukan oleh laluan, lompat ke laluan. Akhir sekali, kami mencipta contoh Vue dan menghantar penghala ke dalamnya.

3. Gunakan penghalaan untuk mengawal kebenaran halaman

Kini, kita boleh menggunakan penghalaan dalam komponen untuk mengawal kebenaran halaman. Berikut ialah contoh komponen:

<template>
  <div>
    <!-- 编写组件内容 -->
  </div>
</template>

<script>
export default {
  name: 'HomePage',
  mounted() {
    // 页面加载时自动跳转到登录页面
    this.$router.push('/login');
  },
};
</script>

Dalam komponen contoh, kami menggunakan kaedah this.$router.push untuk melaksanakan lompatan laluan. Apabila halaman dimuatkan, kami secara automatik melompat ke halaman log masuk. Sudah tentu, anda juga boleh menggunakan kaedah penghalaan lain mengikut keperluan khusus, seperti ini.$router.replace atau this.$router.go, dsb.

Melalui langkah di atas, kami berjaya melaksanakan kawalan dinamik kebenaran halaman berdasarkan penghalaan. Pengguna boleh mengakses halaman yang sepadan hanya jika mereka memenuhi syarat peranan yang diperlukan untuk penghalaan. Dengan cara ini, kami boleh melindungi keselamatan halaman sensitif dengan berkesan dan memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses halaman tersebut.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan penghalaan untuk mengawal kebenaran halaman secara dinamik dalam Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn