使用版本是多少,bladex4.1.0开始支持无感刷新token,应该就没这个问题了
用的版本是
3.2.0.RELEASE
那这种低版本的怎么弄呢
可以在saber的commit记录里搜索无感两个字,有两次提交,根据提交改造下现有前端就行

修改完之后长时间不操作会突然突出登录呢?
相对应的后端需要改什么嘛?
你先用最新版测试,最新版可以而你的不行就说明没有更新到位,核心也就在axios.js里了。token过期会去自动调用刷新接口
store router { } { } { } { } website { Base64 } { } crypto isErrorShown = isRefreshing = refreshTokenPromise = axios..= axios..= (status) {
status >= && status <= }axios..= .configure({
: })axios...(
config => {
.start()isErrorShown = (!(config.) && !config..()) {
config.= + config.}
config.[] = authorization = config.authorization === (!authorization) {
config.[] = ${Base64.(
${website.}${website.})}}
meta = config.meta || {}isToken = meta.isToken === cryptoToken = config.cryptoToken === cryptoData = config.cryptoData === token = ()(token && !isToken) {
config.[website.] = cryptoToken
? + crypto.(tokencrypto.cryptoKey)
: + token}
(cryptoData) {
(config.) {
data = crypto.(.(config.)crypto.)config.= { data }}
(config.) {
config.= config.= crypto.(.(config.)crypto.)}
}
(config.text === ) {
config.[] = }
(config.=== && meta.isSerialize === ) {
config.= (config.)}
config}error => {
.(error)}
)axios...(
res => {
.done()config = res.cryptoData = config.cryptoData === (cryptoData) {
res.= .(crypto.(res.crypto.))}
status = res..error_code || res..|| res.statusWhiteList = website.|| []message = res..|| res..error_description || (statusWhiteList.(status)) .(res)(status === && !config._retry) {
config.= (isRefreshing) {
refreshTokenPromise.(() => {
meta = config.meta || {}isToken = meta.isToken === cryptoToken = config.cryptoToken === token = ()(token && !isToken) {
config.[website.] = cryptoToken
? + crypto.(tokencrypto.cryptoKey)
: + token}
axios(config)})}
isRefreshing = refreshTokenPromise = store
.()
.(() => {
isRefreshing = meta = config.meta || {}isToken = meta.isToken === cryptoToken = config.cryptoToken === token = ()(token && !isToken) {
config.[website.] = cryptoToken
? + crypto.(tokencrypto.cryptoKey)
: + token}
axios(config)})
.(() => {
isRefreshing = (!isErrorShown) {
isErrorShown = ({
: : })}
()()store.().(() => router.({ : })).((message))})refreshTokenPromise}
(status === && config._retry) {
(!isErrorShown) {
isErrorShown = ({
: : })}
()()store.().(() => router.({ : })).((message))}
(status > && !(res..error_description)) {
(!isErrorShown) {
isErrorShown = ({
: message: })}
.((message))}
(status !== && status !== ) {
({
: message: }).((message))}
res}error => {
.done().((error))}
)axios我的整体将axios文件复制过来的
store router { } { } { } { } website { Base64 } { } crypto isErrorShown = isRefreshing = refreshTokenPromise = axios..= axios..= (status) {
status >= && status <= }axios..= .configure({
: })axios...(
config => {
.start()isErrorShown = (!(config.) && !config..()) {
config.= + config.}
config.[] = authorization = config.authorization === (!authorization) {
config.[] = ${Base64.(
${website.}${website.})}}
meta = config.meta || {}isToken = meta.isToken === cryptoToken = config.cryptoToken === cryptoData = config.cryptoData === token = ()(token && !isToken) {
config.[website.] = cryptoToken
? + crypto.(tokencrypto.cryptoKey)
: + token}
(cryptoData) {
(config.) {
data = crypto.(.(config.)crypto.)config.= { data }}
(config.) {
config.= config.= crypto.(.(config.)crypto.)}
}
(config.text === ) {
config.[] = }
(config.=== && meta.isSerialize === ) {
config.= (config.)}
config}error => {
.(error)}
)axios...(
res => {
.done()config = res.cryptoData = config.cryptoData === (cryptoData) {
res.= .(crypto.(res.crypto.))}
status = res..error_code || res..|| res.statusWhiteList = website.|| []message = res..|| res..error_description || (statusWhiteList.(status)) .(res)(status === && !config._retry) {
config.= (isRefreshing) {
refreshTokenPromise.(() => {
meta = config.meta || {}isToken = meta.isToken === cryptoToken = config.cryptoToken === token = ()(token && !isToken) {
config.[website.] = cryptoToken
? + crypto.(tokencrypto.cryptoKey)
: + token}
axios(config)})}
isRefreshing = refreshTokenPromise = store
.()
.(() => {
isRefreshing = meta = config.meta || {}isToken = meta.isToken === cryptoToken = config.cryptoToken === token = ()(token && !isToken) {
config.[website.] = cryptoToken
? + crypto.(tokencrypto.cryptoKey)
: + token}
axios(config)})
.(() => {
isRefreshing = (!isErrorShown) {
isErrorShown = ({
: : })}
()()store.().(() => router.({ : })).((message))})refreshTokenPromise}
(status === && config._retry) {
(!isErrorShown) {
isErrorShown = ({
: : })}
()()store.().(() => router.({ : })).((message))}
(status > && !(res..error_description)) {
(!isErrorShown) {
isErrorShown = ({
: message: })}
.((message))}
(status !== && status !== ) {
({
: message: }).((message))}
res}error => {
.done().((error))}
)axios整体覆盖肯定不行啊,差了快10个版本呢,我是让你把commit里修改的内容放到你现在的axios里

我把这个绿色这个放进去了,同样的道理还是会突然退出登录呢

我把这个绿色这个放进去了,同样的道理还是会突然退出登录呢
这里下载对应的原版历史版本的saber:https://center.javablade.com/blade/BladeX/releases
修改后多打点log,看看再次退回到首页的时候打印了哪些内容。如果你用原版的还是有问题,把你改造的axios.js发到我们邮箱并且附上重现视频。 bladejava@qq.com

已发邮箱
扫一扫访问 Blade技术社区 移动端