Skip to content

Commit 3c2595a

Browse files
committed
feature:调整jwt令牌过期展现形式和返回错误编码形式,方便用户重新登录和知晓错误原因。
1 parent ad323a0 commit 3c2595a

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

server/middleware/jwt.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ func JWTAuth() gin.HandlerFunc {
2323
// 我们这里jwt鉴权取头部信息 x-token 登录时回返回token信息 这里前端需要把token存储到cookie或者本地localStorage中 不过需要跟后端协商过期时间 可以约定刷新令牌或者重新登录
2424
token := utils.GetToken(c)
2525
if token == "" {
26-
response.FailWithDetailed(gin.H{"reload": true}, "未登录或非法访问", c)
26+
response.NoAuth("未登录或非法访问", c)
2727
c.Abort()
2828
return
2929
}
3030
if jwtService.IsBlacklist(token) {
31-
response.FailWithDetailed(gin.H{"reload": true}, "您的帐户异地登陆或令牌失效", c)
31+
response.NoAuth("您的帐户异地登陆或令牌失效", c)
3232
utils.ClearToken(c)
3333
c.Abort()
3434
return
@@ -38,12 +38,12 @@ func JWTAuth() gin.HandlerFunc {
3838
claims, err := j.ParseToken(token)
3939
if err != nil {
4040
if errors.Is(err, utils.TokenExpired) {
41-
response.FailWithDetailed(gin.H{"reload": true}, "授权已过期", c)
41+
response.NoAuth("授权已过期", c)
4242
utils.ClearToken(c)
4343
c.Abort()
4444
return
4545
}
46-
response.FailWithDetailed(gin.H{"reload": true}, err.Error(), c)
46+
response.NoAuth(err.Error(), c)
4747
utils.ClearToken(c)
4848
c.Abort()
4949
return

server/model/common/response/response.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ func FailWithMessage(message string, c *gin.Context) {
5050
Result(ERROR, map[string]interface{}{}, message, c)
5151
}
5252

53+
func NoAuth(message string, c *gin.Context) {
54+
c.JSON(http.StatusUnauthorized, Response{
55+
7,
56+
nil,
57+
message,
58+
})
59+
}
60+
5361
func FailWithDetailed(data interface{}, message string, c *gin.Context) {
5462
Result(ERROR, data, message, c)
5563
}

web/src/utils/request.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,6 @@ service.interceptors.response.use(
8383
message: response.data.msg || decodeURI(response.headers.msg),
8484
type: 'error'
8585
})
86-
if (response.data.data && response.data.data.reload) {
87-
userStore.token = ''
88-
window.localStorage.removeItem('token')
89-
router.push({ name: 'Login', replace: true })
90-
}
9186
return response.data.msg ? response.data : response
9287
}
9388
},
@@ -137,6 +132,22 @@ service.interceptors.response.use(
137132
cancelButtonText: '取消'
138133
})
139134
break
135+
case 401:
136+
ElMessageBox.confirm(`
137+
<p>无效的令牌</p>
138+
<p>错误码:<span style="color:red"> 401 </span>错误信息:${error}</p>
139+
`, '身份信息', {
140+
dangerouslyUseHTMLString: true,
141+
distinguishCancelAndClose: true,
142+
confirmButtonText: '重新登录',
143+
cancelButtonText: '取消'
144+
})
145+
.then(() => {
146+
const userStore = useUserStore()
147+
userStore.ClearStorage()
148+
router.push({ name: 'Login', replace: true })
149+
})
150+
break
140151
}
141152

142153
return error

0 commit comments

Comments
 (0)