切换导航条
此项目
正在载入...
登录
朱兆平
/
vue_cli
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
朱兆平
6 years ago
提交
a07d0defad0714fbf1d68335084e9efbea11ba44
1 个父辈
eb45da8b
http部分request携带登录后得到的TOKEN与后端交互
隐藏空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
33 行增加
和
20 行删除
src/api/http.js
src/axios.js
src/main.js
src/views/Login.vue
src/api/http.js
查看文件 @
a07d0de
...
...
@@ -2,7 +2,7 @@ import axios from 'axios'
import
qs
from
'qs'
axios
.
defaults
.
baseURL
=
'
http://localhost:8082
/api'
;
axios
.
defaults
.
baseURL
=
'/api'
;
...
...
@@ -55,7 +55,7 @@ export default {
data
:
qs
.
stringify
(
data
),
// post 请求的数据
timeout
:
30000
,
// 超时时间, 单位毫秒
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
,
'Content-Type'
:
'application/x-www-form-urlencoded'
}
})
}
...
...
src/axios.js
0 → 100644
查看文件 @
a07d0de
src/main.js
查看文件 @
a07d0de
...
...
@@ -12,7 +12,7 @@ import axios from 'axios'
//import 'nprogress/nprogress.css'
import
rout
from
'./routes'
import
Mock
from
'./mock'
import
'font-awesome/css/font-awesome.min.css'
//定义一个全局过滤器实现日期格式化
Vue
.
filter
(
'datefmt'
,
function
(
input
,
fmtstring
){
...
...
@@ -23,12 +23,12 @@ Vue.filter('datefmt',function(input,fmtstring){
Vue
.
config
.
productionTip
=
false
Mock
.
bootstrap
();
import
'font-awesome/css/font-awesome.min.css'
Vue
.
use
(
ElementUI
)
Vue
.
use
(
VueRouter
)
Vue
.
use
(
Vuex
)
Vue
.
prototype
.
$axios
=
axios
;
//NProgress.configure({ showSpinner: false });
console
.
log
(
"mainjs:"
);
...
...
@@ -36,6 +36,7 @@ console.log(rout.routes);
const
router
=
new
VueRouter
({
routes
:
rout
.
routes
});
Vue
.
prototype
.
$rout
=
router
;
//本地存储系统初始化的router路由,用来处理用户退出后,把路由数据初始化
sessionStorage
.
setItem
(
'sysMenu'
,
JSON
.
stringify
(
rout
.
routes
));
...
...
@@ -45,9 +46,12 @@ router.beforeEach((to, from, next) => {
if
(
to
.
path
==
'/login'
)
{
sessionStorage
.
removeItem
(
'user'
);
sessionStorage
.
removeItem
(
'menu'
);
sessionStorage
.
removeItem
(
'token'
);
sessionStorage
.
removeItem
(
'token'
);
}
let
user
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'user'
));
if
(
sessionStorage
.
getItem
(
'token'
)){
axios
.
defaults
.
headers
.
common
[
'Authorization'
]
=
sessionStorage
.
getItem
(
'token'
);
}
if
(
!
user
&&
to
.
path
!=
'/login'
&&
!
sessionStorage
.
getItem
(
'menu'
)
&&
!
sessionStorage
.
getItem
(
'token'
))
{
next
({
path
:
'/login'
})
}
else
{
...
...
@@ -57,12 +61,19 @@ router.beforeEach((to, from, next) => {
axios
.
interceptors
.
response
.
use
(
res
=>
{
//调用ELEMETN的message组件
let
msg
=
Vue
.
prototype
.
$message
;
//调用route组件
let
route
=
Vue
.
prototype
.
$rout
;
route
.
push
({
path
:
"/main"
});
//对响应数据做些事
if
(
res
.
data
&&
res
.
status
!==
200
)
{
this
.
$message
({
msg
({
// 饿了么的消息弹窗组件,类似toast
showClose
:
true
,
message
:
res
.
data
.
error
.
message
.
message
?
res
.
data
.
error
.
message
.
message
:
res
.
data
.
error
.
message
,
message
:
'res.data.error.message.message ? res.data.error.message.message : res.data.error.message'
,
type
:
"error"
});
return
Promise
.
reject
(
res
.
data
.
error
.
message
);
...
...
@@ -81,9 +92,15 @@ axios.interceptors.response.use(
// 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
if
(
error
.
response
.
status
===
401
)
{
router
.
push
({
path
:
"/login"
Vue
.
prototype
.
$message
({
// 饿了么的消息弹窗组件,类似toast
showClose
:
true
,
message
:
'未授权,请登录'
,
type
:
"error"
});
// router.push({
// path: "/login"
// });
}
// 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面
...
...
src/views/Login.vue
查看文件 @
a07d0de
...
...
@@ -109,7 +109,7 @@
//NProgress.done();
let status = res.status;
let authentication = res.data.authentication;
let
loginSuccess
= authentication.token;
let
token
= authentication.token;
let loginUserMenus = res.data.loginUserMenus;
if (status !== 200) {
let msg = "登录错误";
...
...
@@ -117,12 +117,11 @@
message: msg,
type: "error"
});
} else if (
loginSuccess
) {
} else if (
token
) {
sessionStorage.setItem('user', JSON.stringify(authentication));
sessionStorage.setItem('token','Bearer '+ loginSuccess);
//设置token,设置axios 基本配置
let token = sessionStorage.getItem('token');
axios.defaults.headers.common['Authorization'] = token;
sessionStorage.setItem('token','Bearer '+ token);
//设置token,设置axios 基本配置,但是刷新后 这个登录保存的就没了
axios.defaults.headers.common['Authorization'] = 'Bearer '+token;
//处理用户menu
_this.userMenus = loginUserMenus.list;
console.log("userMenus:");
...
...
@@ -140,11 +139,8 @@
_this.$router.push({path: '/main'});
}
}).catch(error => {
let msg = error.message;
let errResponse = error.response.statusText;
let defaultLoginErr = "登录失败";
this.$message({
message:
defaultLoginErr
,
message:
error.toString()
,
type: "error"
});
this.logining = false;
...
...
请
注册
或
登录
后发表评论