智慧农业后台管理页面
xiebin
2022-08-30 60b4e3f57042c32aca2be628042fd6eff5c87249
优化登录相关
5 files modified
54 ■■■■ changed files
src/api/user.js 5 ●●●●● patch | view | raw | blame | history
src/permission.js 27 ●●●●● patch | view | raw | blame | history
src/router/axios.js 5 ●●●●● patch | view | raw | blame | history
src/util/store.js 7 ●●●● patch | view | raw | blame | history
vue.config.js 10 ●●●●● patch | view | raw | blame | history
src/api/user.js
@@ -1,6 +1,11 @@
import request from '@/router/axios';
import website from "@/config/website";
export const loginInfoByToken = () => request({
  url: '/api/blade-auth/getuser/token',
  method: 'get',
});
export const loginByUsername = (tenantId, deptId, roleId, username, password, type, key, code) => request({
  url: '/api/blade-auth/oauth/token',
  method: 'post',
src/permission.js
@@ -8,6 +8,8 @@
import {getToken} from '@/util/auth'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import {loginInfoByToken} from '@/api/user'
import {Message} from "element-ui";
NProgress.configure({showSpinner: false});
const lockPage = store.getters.website.lockPage; //锁屏页
router.beforeEach((to, from, next) => {
@@ -57,7 +59,30 @@
    if (meta.isAuth === false) {
      next()
    } else {
      next('/login')
      // 需要判断是否单点登录
      let token = window.sessionStorage.getItem('token')
      if (token) {
        loginInfoByToken.then(res => {
          const data = res.data;
          if (data.error_description) {
            Message({
              message: data.error_description,
              type: 'error'
            })
          } else {
            this.$store.commit('SET_TOKEN', data.access_token);
            this.$store.commit('SET_REFRESH_TOKEN', data.refresh_token);
            this.$store.commit('SET_TENANT_ID', data.tenant_id);
            this.$store.commit('SET_USER_INFO', data);
            this.$store.commit('DEL_ALL_TAG');
            this.$store.commit('CLEAR_LOCK');
            next(to.path)
          }
        })
      } else {
        next('/login')
      }
    }
  }
})
src/router/axios.js
@@ -39,6 +39,11 @@
  if (getToken() && !isToken) {
    config.headers[website.tokenHeader] = 'bearer ' + getToken()
  }
  // 获取统一登录携带的token
  const tokensso = window.sessionStorage.getItem('token')
  if (tokensso) {
    config.headers[website.tokenHeader] = 'bearer ' + tokensso
  }
  //headers中配置text请求
  if (config.text === true) {
    config.headers["Content-Type"] = "text/plain";
src/util/store.js
@@ -13,6 +13,10 @@
        content,
        type,
    } = params;
    if (name == 'token' || name == 'refreshToken') {
        window.sessionStorage.setItem(name, content);
        window.localStorage.setItem(name, content);
    }
    name = keyName + name
    let obj = {
        dataType: typeof (content),
@@ -26,7 +30,6 @@
/**
 * 获取localStorage
 */
export const getStore = (params = {}) => {
    let {
        name,
@@ -118,4 +121,4 @@
        window.localStorage.clear()
    }
}
}
vue.config.js
@@ -4,7 +4,7 @@
module.exports = {
    //路径前缀
    publicPath: "/",
    publicPath: "/zhny-web",
    lintOnSave: true,
    productionSourceMap: false,
    chainWebpack: (config) => {
@@ -39,13 +39,15 @@
    },
    //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
    devServer: {
        // 本地配置host生效
        disableHostCheck:true,
        port: 1888,
        proxy: {
            '/api': {
                //本地服务接口地址
                // target: 'http://192.168.0.126:89',
                target: 'http://192.168.0.207:89',
                //远程演示服务地址,可用于直接启动项目
                target: 'http://182.106.212.58:8013/api',
                // target: 'http://182.106.212.58:8013/api',
                ws: true,
                pathRewrite: {
                    '^/api': '/'
@@ -53,4 +55,4 @@
            }
        }
    }
}
}