Vue2 + iView的后台管理系统解决方案

基于Vue2 + iView2.0的后台管理系统解决方案示例.

目前实现的功能及用到的组件

项目地址

使用

git https://github.com/shanyanwt/koa_vue_blog.git
npm install          // 安装依赖
npm run dev         // 本地开发
npm run build       // 生产部署

目录结构

.
├─build                                  //构建配置目录
│
└─src                                   
    │  App.vue                           //入口文件
    │  main.js                         
    │
    ├─api                                //api
    │
    ├─common                             //工具类
    │
    ├─components                         //组件
    │      countUp.vue                   //数字滚动组件
    │      uploadImg.vue                 //压缩图组件
    │
    ├─filter                             //过滤器
    │      dateFilter.js
    │
    ├─router                             //路由
    │      index.js
    │      router.js
    │
    ├─static                             //静态文件
    │
    ├─template                           //打包模板
    │      index.ejs
    │
    ├─vendors                            //打包模板
    │
    └─view   
        │  about.vue                     //关于我们
        │  articleList.vue               //文章列表
        │  main.vue                      //入口
        │  rtf.vue                       //编辑文章
        │  user.vue                      //用户列表
        ├─index                          //首页
        │
        └─login                          //登录页

用户登录示例

使用  crypto MD5加密

// 引入上述封装的utils.js
import utils from '../utils.js'
let name = 'abcd'
let password = '123'
let user_ticket = utils.md5(utils.md5(name + utils.md5(password)))
console.log(user_ticket)  => 3a59492a85438a3a39a30fd0d8103ac5 //加密后的结果
//MD5加盐登录
let name = 'abcd'
let password = '123'
var timestamp = Date.parse(new Date()) / 1000
let user_ticket = utils.md5(utils.md5(utils.md5(name + utils.md5(password))) + timestamp)
console.log(user_ticket) =>0b3298cb3c20b08318c185aec803a929  //加盐的结果
//服务端在通过加密后打密文和库中再次作比较

                var timestamp = Date.parse(new Date()) / 1000
                let user_ticket = utils.md5(utils.md5((utils.md5((this.formInline.user).toLowerCase() +
                    utils.md5(this.formInline.password))).toLowerCase()) + timestamp)
                axios({
                    method: 'post',
                    url: api.API.admin_login,
                    data: {
                        'user_ticket': user_ticket,
                        'name': this.formInline.user,
                        'timestamp': timestamp
                    }
                }).then(res => {
                    if(res.error_code == consts.ERROR_CODE.SUCCESS) {
                        this.$Notice.success({
                            title: '登录成功!',
                        });
                        let userInfo = JSON.stringify(res.result_data)
                        cacheUtils.localStorage(consts.USERINFO).set(consts.USERINFO, userInfo)
                        this.$router.push('/home');
                    } else if(res.error_code == consts.ERROR_CODE.USERNAME_OR_PASS_ERRROR) {
                        this.$Notice.error({
                            title: '用户名密码错误!'
                        });
                    } else {
                        this.$Notice.error({
                            title: '服务器挤爆了,稍后重试!'
                        });
                    }
                }).catch(err => {
                    this.$Notice.error({
                            title: '服务器挤爆了,稍后重试!'
                        });
                })
  • 管理端通过 router 的 beforeEach进行用户是否已经登录
router.beforeEach((to, from, next) => {
    let userInfo = cacheUtils.localStorage(consts.USERINFO).get(consts.USERINFO)
    if(!userInfo && to.name != 'login') { // 判断是否已经登录且前往的是登录页
        next({
            name: 'login'
        });
    } else if(userInfo && to.name == 'index') {
        next({
            name: 'home'
        });
    } else {
        next();                 //登录后继续向下执行
    }
});

MD5加盐解密案例 https://segmentfault.com/a/11…
《Vue2 + iView的后台管理系统解决方案》
《Vue2 + iView的后台管理系统解决方案》
《Vue2 + iView的后台管理系统解决方案》

愿你保持独立思考、不卑、不亢、不怂努力长成自己喜欢的样子

我是一只孤独的狼……欢迎star

    原文作者:shanyanwt
    原文地址: https://segmentfault.com/a/1190000020287570
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞