提交 e03e0de7 编写于 作者: tony001's avatar tony001

新增应用刷新token逻辑

上级 6d31ef09
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<script lang="ts"> <script lang="ts">
import {Vue, Component, Watch} from 'vue-property-decorator'; import {Vue, Component, Watch} from 'vue-property-decorator';
import {Environment} from '@/environments/environment'; import {Environment} from '@/environments/environment';
//import Divider from "ibiz-vue-lib/lib/ibiz-vue-lib.common"; import { Util } from '@/utils';
@Component({ @Component({
components: {} components: {}
...@@ -141,7 +141,7 @@ export default class Login extends Vue { ...@@ -141,7 +141,7 @@ export default class Login extends Vue {
} }
public mounted() { public mounted() {
this.getCookie("loginname"); Util.getCookie("loginname");
} }
/** /**
...@@ -181,13 +181,13 @@ export default class Login extends Vue { ...@@ -181,13 +181,13 @@ export default class Login extends Vue {
const data = response.data; const data = response.data;
if (data && data.token) { if (data && data.token) {
localStorage.setItem('token', data.token); localStorage.setItem('token', data.token);
this.setCookie('ibzuaa-token',data.token,0); Util.setCookie('ibzuaa-token',data.token,0);
} }
if(data && data.user){ if(data && data.user){
localStorage.setItem('user', JSON.stringify(data.user)); localStorage.setItem('user', JSON.stringify(data.user));
} }
// 设置cookie,保存账号密码7天 // 设置cookie,保存账号密码7天
this.setCookie("loginname",loginname, 7); Util.setCookie("loginname",loginname, 7);
// 跳转首页 // 跳转首页
const url: any = this.$route.query.redirect ? this.$route.query.redirect : '*'; const url: any = this.$route.query.redirect ? this.$route.query.redirect : '*';
this.$router.push({path: url}); this.$router.push({path: url});
...@@ -223,40 +223,6 @@ export default class Login extends Vue { ...@@ -223,40 +223,6 @@ export default class Login extends Vue {
_this.form={loginname: 'ibzadmin', password: '123456'} _this.form={loginname: 'ibzadmin', password: '123456'}
} }
/**
* 设置cookie
*
* @memberof Login
*/
public setCookie(name: any, value: any, day: any) {
if (day !== 0) { //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
let curDate = new Date();
let curTamp = curDate.getTime();
let curWeeHours = new Date(curDate.toLocaleDateString()).getTime() - 1;
let passedTamp = curTamp - curWeeHours;
let leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
let leftTime = new Date();
leftTime.setTime(leftTamp + curTamp);
document.cookie = name + "=" + escape(value) + ";expires=" + leftTime.toUTCString();
} else {
document.cookie = name + "=" + escape(value);
}
}
/**
* 获取cookie
*
* @memberof Login
*/
public getCookie(name: any): any {
let arr;
let reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
/** /**
* qq授权登录 * qq授权登录
* @param thirdpart * @param thirdpart
......
...@@ -3,6 +3,9 @@ import axios from 'axios'; ...@@ -3,6 +3,9 @@ import axios from 'axios';
import Router from 'vue-router'; import Router from 'vue-router';
import i18n from '@/locale'; import i18n from '@/locale';
import { Environment } from '@/environments/environment'; import { Environment } from '@/environments/environment';
import { Http } from '@/http/http';
import { Util } from '@/util/util';
/** /**
* 拦截器 * 拦截器
* *
...@@ -117,7 +120,11 @@ export class Interceptors { ...@@ -117,7 +120,11 @@ export class Interceptors {
res.data.entityName = res.headers['x-ibz-params']; res.data.entityName = res.headers['x-ibz-params'];
} }
if (res.status === 401) { if (res.status === 401) {
this.doNoLogin(_data.data); if(res.headers && res.headers['refreshToken'] && localStorage.getItem('token')){
this.refreshToken(_data.data);
}else{
this.doNoLogin(_data.data);
}
} }
if(res.status === 403){ if(res.status === 403){
if(res.data && res.data.status && Object.is(res.data.status,"FORBIDDEN")){ if(res.data && res.data.status && Object.is(res.data.status,"FORBIDDEN")){
...@@ -174,4 +181,27 @@ export class Interceptors { ...@@ -174,4 +181,27 @@ export class Interceptors {
} }
} }
/**
* 刷新token
*
* @private
* @param {*} [data={}]
* @memberof Interceptors
*/
private refreshToken(data: any = {}):void{
Http.getInstance().post('/uaa/refreshToken',{oldToken:localStorage.getItem('token')},false).then((response: any) => {
if (response && response.status === 200) {
const data = response.data;
if (data && data.token) {
localStorage.setItem('token', data.token);
Util.setCookie('ibzuaa-token',data.token,0);
}
}else{
this.doNoLogin(data);
}
}).catch((error: any) => {
this.doNoLogin(data);
});
}
} }
\ No newline at end of file
...@@ -153,7 +153,7 @@ export declare interface Util { ...@@ -153,7 +153,7 @@ export declare interface Util {
* @returns {string} * @returns {string}
* @memberof Util * @memberof Util
*/ */
dateFormat(date: any,fmt?: string):string dateFormat(date: any,fmt?: string):string;
/** /**
* 表单项校验 * 表单项校验
...@@ -164,7 +164,21 @@ export declare interface Util { ...@@ -164,7 +164,21 @@ export declare interface Util {
* @returns {Promise} * @returns {Promise}
* @memberof Util * @memberof Util
*/ */
validateItem(property: string, data:any, rules:any): Promise<any> validateItem(property: string, data:any, rules:any): Promise<any>;
/**
* 设置cookie
*
* @memberof Util
*/
setCookie(name: any, value: any, day: any):void;
/**
* 获取cookie
*
* @memberof Util
*/
getCookie(name: any): any;
} }
declare module "vue/types/vue" { declare module "vue/types/vue" {
......
...@@ -427,4 +427,39 @@ export class Util { ...@@ -427,4 +427,39 @@ export class Util {
// 校验返回Promise // 校验返回Promise
return schema.validate({ [property]: value }) return schema.validate({ [property]: value })
} }
/**
* 设置cookie
*
* @memberof Util
*/
public static setCookie(name: any, value: any, day: any) {
if (day !== 0) { //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
let curDate = new Date();
let curTamp = curDate.getTime();
let curWeeHours = new Date(curDate.toLocaleDateString()).getTime() - 1;
let passedTamp = curTamp - curWeeHours;
let leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
let leftTime = new Date();
leftTime.setTime(leftTamp + curTamp);
document.cookie = name + "=" + escape(value) + ";expires=" + leftTime.toUTCString();
} else {
document.cookie = name + "=" + escape(value);
}
}
/**
* 获取cookie
*
* @memberof Util
*/
public static getCookie(name: any): any {
let arr;
let reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
} }
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册