博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vuejs2.0 vsCode router前后端分离权限 vueAdmin后台基础模板
阅读量:6371 次
发布时间:2019-06-23

本文共 3157 字,大约阅读时间需要 10 分钟。

感觉不错的开源项目,所以搜集资料来细致的剖析,帮助更多人尽快步入后台系统的开发,其实后台项目有两个最基础最重要的东西就是:权限验证和安全性,关于VSCode是最近很火的编辑器不做过多说明,下面的参考资料有详细讲解

第三方参考资料
  1. me-admin-template

根据环境读取配置

  • 在项目中新建 config 文件夹
  • 添加 index.js 并写入export default require('./_' + process.env.NODE_ENV)
  • 根据vue-cli生成的环境变量(根目录config设置)有三个环境:development,testing,production,config 目录结构如下所示

vue-cli 默认只提供了dev和prod两种环境。但其实正真的开发流程可能还会多一个sit或者stage环境,就是所谓的测试环境和预发布环境。所以我们就要简单的修改一下代码。其实很简单就是设置不同的环境变量

"build:prod": "NODE_ENV=production node build/build.js","build:sit": "NODE_ENV=sit node build/build.js",

之后在代码里自行判断,想干就干啥

var env = process.env.NODE_ENV === 'production' ? config.build.prodEnv : config.build.sitEnv
建议使用npm install --registry=https://registry.npm.taobao.org安装依赖包使用cnpm install或者update 它的包是一个link,会有各种诡异的bug

添加请求、响应拦截器,@/_extends/ui,在_extends中定义公共弹框以及进度条通过index向外提供方法接口
import axios from 'axios'import _config from '@/_config'import $ui from '@/_extends/ui'// import qs from 'qs'const instance = axios.create({  baseURL: _config.apiBaseUrl, // api的base_url  timeout: 10000 // 请求超时时间  // transformRequest: data => qs.stringify(data)})// request拦截器instance.interceptors.request.use(  e => {    e.method = _config.isMockTest ? 'GET' : e.method    e.url = _config.suffix ? e.url + _config.suffix : e.url    e.params = e.params || {}    e.headers = e.headers || {}    if (localStorage.token) {      e.headers['Authorization'] = localStorage.token      //后端会验证每一个涉及请求的操作,验证其是否有该操作的权限,      //每一个后台的请求不管是 get 还是 post 都会让前端在请求       //header里面携带用户的 token,后端会根据该       //token 来验证用户是否有权限执行该操作。    }    return e  },  error => ({ status: 0, msg: error.message }))// respone拦截器instance.interceptors.response.use(  response => {    const resp = response.data    if (resp && resp.status === 0 && resp.msg) {      $ui.pages.warn(resp.msg)    }    if (response.status === 200) {      return resp    }    return response  },  error => {    const err = { status: 0, msg: '服务器异常' }    if (      error.message &&      (error.message.indexOf('403') > -1 || error.message.indexOf('401') > -1)    ) {      err.msg = '权限校验失败,请重新登录'    }    $ui.pages.warn(err.msg)    console.log('err' + error) // for debug    return Promise.reject(err)  })export default instance
用户登录成功之后,我们会在全局钩子router.beforeEach中拦截路由,判断是否已获得token,在获得token之后我们就要去获取用户的基本信息了
  • 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到cookie中,保证刷新页面后能记住用户登录状态),前端会根据token再去拉取一个 user_info 的接口来获取用户的详细信息(如用户权限,用户名等等信息)
  • 权限验证:通过token获取用户对应的 role,动态根据用户的 role 算出其对应有权限的路由,通过 router.addRoutes 动态挂载这些路由
  • 两步验证:其实就是账号密码验证之后绑定第三方平台,登陆成功后不重定向到首页而是弹出第三方平台登陆窗口
scrollBehavior,前端路由切换新路由想要页面滚动到顶部
import Vue from 'vue'import Router from 'vue-router'import { routes } from './routes'import logic from './logic'Vue.use(Router)const router = new Router({  scrollBehavior(to, from, savedPosition) {    if (savedPosition) return savedPosition    const position = {}    if (to.hash) {      position.selector = to.hash    }    position.x = 0    position.y = 0    return position  },  routes})router.beforeEach(logic.beforeEach)router.afterEach(logic.afterEach)export default router

前端后端 控制权限

  • 后端的确也是有权限验证的,但它的验证其实是针对业务来划分的,比如超级编辑可以发布文章,而实习编辑只能编辑文章不能发布,但对于前端来说不管是超级编辑还是实习编辑都是有权限进入文章编辑页面的。
  • 还在更新中。。。

转载地址:http://jiyqa.baihongyu.com/

你可能感兴趣的文章
linux shell简单实现数据库自动备份
查看>>
SQLServer存储过程返回值总结
查看>>
Python画图matplotlib展示图中中文乱码
查看>>
高效5步走,高速搭建Hadoop2伪分布环境
查看>>
项目中遇到的HQL查询问题
查看>>
Cocos2d-x学习笔记(四) 布景层的加入移除
查看>>
(转) Universal-Image-Loader使用大全(史上最屌)
查看>>
Web 文件上传 目录
查看>>
NPAPI插件开发详细记录:插件开发入门
查看>>
【DBCP】DBCP基本配置和重连配置+spring中配置
查看>>
SpringCloud学习笔记(7)——Sleuth
查看>>
【如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?】
查看>>
Generative Adversarial Nets[Introduction]
查看>>
mybatis源码解读(四)——事务的配置
查看>>
lodash 展平数组 flatten flattenDeep
查看>>
将自己写的HDL代码封装成带AXI总线的IP
查看>>
NotePad++ 配置Python工作环境
查看>>
Android launchMode SingleTask newIntent 的问题
查看>>
跨域单点登录实现(使用iframe)_勇敢的心_百度空间
查看>>
解决VS2010在程序根目录生成ipch文件夹和.sdf格式文件问题
查看>>