Vue.js

vue-element-admin登录验证使用

2019-06-28  本文已影响0人  xyz098

安装

官网指导
首页
vue.js-guide

# 克隆项目
git clone https://github.com/PanJiaChen/vue-element-admin.git
# 进入项目目录
cd vue-element-admin
# 建议不要用 cnpm 安装 会有各种诡异的bug 可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org
# 本地开发 启动项目
npm run dev

npm命令参数

npm install 可简写为 npm i
-g  (--global)         // 安装当作全局包
-S  (--save)           // 安装包写入package.json的dependencies
-D  (--save-dev)     // 安装的包将写入packege.json里面的devDependencies
-O  (--save-optional)  // 安装的包将写入packege.json里面的optionalDependencies
-E  (--save-exact)     // 安装的包的版本是精确指定的
-B  (--save-bundle)    // 安装的包将写入packege.json里面的bundleDependencies

javascript基本介绍

ECMAScript6的标准

=> 函数
export default 模块

vue.js 文档

vue-element-admin 登录验证

vue-element-admin 简书

找代码思路: src/router (index.js) ----> src/views/login (index.vue) ----> scr/api (alert.js)

  1. 路由代码 src/router (index.js)

    export const constantRoutes =   [
      ......
      {
          path: '/login',
          component: () => import('@/views/login/index'),
          hidden: true
      },
      ......
    ]
    
  2. src/views/login (index.vue)

        handleLogin() {
          console.log('username', this.loginForm.username)
          if (this.loginForm.username.length === 0) {
            alert('请输入邮箱号')
            return
          }
          if (this.loginForm.password.length === 0) {
            alert('请输入密码')
            return
          }
          this.$refs.loginForm.validate(valid => {
            if (valid) {
              this.loading = true
              // 代码调到了src/store下的user.js,调用了里面的login方法
              this.$store.dispatch('user/login', this.loginForm)
                .then(() => {
                  this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
                  this.loading = false
                })
                .catch(error => {
                  console.log('xxx', error)
                  this.loading = false
                })
            } else {
              console.log('error submit!!')
              return false
            }
          })
        },
    
  3. src/stroe (user.js)

      // user login
      login({ commit }, userInfo) {
        const { username, password } = userInfo
        return new Promise((resolve, reject) => {
          // 调用了api/user.js
          login({ username: username.trim(), password: password }).then(response => {
            const { data } = response
            commit('SET_TOKEN', data.token)
            setToken(data.token)
            resolve()
          }).catch(error => {
            reject(error)
          })
        })
      },
    
  4. src/api (user.js)

    import request from '@/utils/request'
    export function login(data) {
      return request({
        // 使用默认前缀
        url: '/user/login',
        method: 'post',
        data
      })
    }
    
  5. src/utils (request.js)

    
    // create an axios instance
    const service = axios.create({
      // 使用了默认前缀
      baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
      timeout: 5000 // request timeout
    })
    
  6. 修改默认前缀变量 .env.development .env.production .env.staging

    VUE_APP_BASE_API = 'http://127.0.0.1:9093/api/v1'
    
  7. 后端代码实现三个接口,即可对接登录

    curl -XPOST  http://127.0.0.1:9093/api/v1/user/login 
    {"code":200,"status":"success","data":{"token":"test-token"}}
    
    curl -XPOST  http://127.0.0.1:9093/api/v1/user/info?token=xxx 
    {"code":200,"status":"success","data":{"roles":"Admin"}}
    
    curl -XPOST  http://127.0.0.1:9093/api/v1/user/logout
    {"code":200,"status":"success","data":"sucess"}
    
上一篇 下一篇

猜你喜欢

热点阅读