diff --git a/config/index.js b/config/index.js index b89e19f..533e9ea 100644 --- a/config/index.js +++ b/config/index.js @@ -4,6 +4,7 @@ const path = require('path') const devEnv = require('./dev.env') +const IP = require('ip').address() module.exports = { dev: { @@ -11,19 +12,15 @@ module.exports = { // Paths assetsSubDirectory: 'static', assetsPublicPath: '/', - // 代理列表, 是否开启代理通过[./dev.env.js]配置 - proxyTable: devEnv.OPEN_PROXY === false ? {} : { - '/proxyApi': { - target: 'http://demo.renren.io/renren-fast/', - changeOrigin: true, - pathRewrite: { - '^/proxyApi': '/' - } - } + proxyTable: { + '/renren-fast-server': { + target: 'http://demo.open.renren.io', + changeOrigin: true + }, }, // Various Dev Server settings - host: 'localhost', // can be overwritten by process.env.HOST + host: IP, // can be overwritten by process.env.HOST port: 8001, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined autoOpenBrowser: true, errorOverlay: true, diff --git a/package.json b/package.json index f1b0aa1..946a1f4 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "file-loader": "1.1.4", "friendly-errors-webpack-plugin": "1.6.1", "html-webpack-plugin": "2.30.1", + "ip": "^1.1.5", "jest": "21.2.0", "jest-serializer-vue": "0.3.0", "nightwatch": "0.9.12", diff --git a/src/api/api_menu.js b/src/api/api_menu.js new file mode 100644 index 0000000..d6a11c1 --- /dev/null +++ b/src/api/api_menu.js @@ -0,0 +1,6 @@ +import http from '../utils/http' + +// 获取侧边菜单栏 +export const apiGetMenuNav = params => { + return http({ url: '/renren-fast-server/sys/menu/nav', method: 'get', params }) +} diff --git a/src/api/api_user.js b/src/api/api_user.js new file mode 100644 index 0000000..b57c2ed --- /dev/null +++ b/src/api/api_user.js @@ -0,0 +1,11 @@ +import http from '../utils/http' + +// 登录 +export const apiLogin = data => { + return http({ url: '/renren-fast-server/sys/login', method: 'post', data }) +} + +// 获取用户相关 +export const apiGetUserInfo = params => { + return http({ url: '/renren-fast-server/sys/user/info', method: 'get', params }) +} diff --git a/src/router/index.js b/src/router/index.js index e1a5dc3..be7d959 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -6,7 +6,7 @@ */ import Vue from 'vue' import Router from 'vue-router' -import http from '@/utils/httpRequest' +import { apiGetMenuNav } from '../api/api_menu' import { isURL } from '@/utils/validate' import { clearLoginInfo } from '@/utils' @@ -49,7 +49,7 @@ const mainRoutes = { } const router = new Router({ - mode: 'hash', + mode: 'history', scrollBehavior: () => ({ y: 0 }), isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由 routes: globalRoutes.concat(mainRoutes) @@ -62,25 +62,18 @@ router.beforeEach((to, from, next) => { if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') { next() } else { - http({ - url: http.adornUrl('/sys/menu/nav'), - method: 'get', - params: http.adornParams() - }).then(({data}) => { - if (data && data.code === 0) { - fnAddDynamicMenuRoutes(data.menuList) + apiGetMenuNav({}).then(res => { + if (res && res.code === 0) { + fnAddDynamicMenuRoutes(res.menuList) router.options.isAddDynamicMenuRoutes = true - sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]')) - sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]')) + sessionStorage.setItem('menuList', JSON.stringify(res.menuList || '[]')) + sessionStorage.setItem('permissions', JSON.stringify(res.permissions || '[]')) next({ ...to, replace: true }) } else { sessionStorage.setItem('menuList', '[]') sessionStorage.setItem('permissions', '[]') next() } - }).catch((e) => { - console.log(`%c${e} 请求菜单列表和权限失败,跳转至登录页!!`, 'color:blue') - router.push({ name: 'login' }) }) } }) diff --git a/src/utils/http.js b/src/utils/http.js new file mode 100644 index 0000000..1e50d15 --- /dev/null +++ b/src/utils/http.js @@ -0,0 +1,48 @@ +import Vue from 'vue' +import axios from 'axios' +import router from '@/router' +import { clearLoginInfo } from '@/utils' +import { Message } from 'element-ui' + +const http = axios.create({ + timeout: 1000 * 30, + withCredentials: true, + headers: { + 'Content-Type': 'application/json; charset=utf-8' + } +}) + +/** + * 请求拦截 + */ +http.interceptors.request.use(config => { + config.headers['token'] = Vue.cookie.get('token') // 请求头带上token + config.data = Object.assign({}, config.data, { t: new Date().getTime() }) + return config +}, +error => { + return Promise.reject(error) +}) + +/** + * 响应拦截 + */ +http.interceptors.response.use( + response => { + if (response.data && response.data.code === 401) { // 401, token失效 + clearLoginInfo() + router.push({ name: 'login' }) + } + return response.data + }, + error => { + Message({ + message: error.message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } +) + +export default http diff --git a/src/views/common/login.vue b/src/views/common/login.vue index 7749340..56077e5 100644 --- a/src/views/common/login.vue +++ b/src/views/common/login.vue @@ -8,9 +8,9 @@

管理员登录

- - - + + + @@ -22,12 +22,13 @@ - +
@@ -38,62 +39,48 @@