Skip to content

Commit 62b84d4

Browse files
committed
feature:提取创建claims和token的方法,方便后续插件扩展。
1 parent b10c729 commit 62b84d4

File tree

3 files changed

+54
-10
lines changed

3 files changed

+54
-10
lines changed

server/api/v1/system/sys_user.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,7 @@ func (b *BaseApi) Login(c *gin.Context) {
7676

7777
// TokenNext 登录以后签发jwt
7878
func (b *BaseApi) TokenNext(c *gin.Context, user system.SysUser) {
79-
j := &utils.JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
80-
claims := j.CreateClaims(systemReq.BaseClaims{
81-
UUID: user.UUID,
82-
ID: user.ID,
83-
NickName: user.NickName,
84-
Username: user.Username,
85-
AuthorityId: user.AuthorityId,
86-
})
87-
token, err := j.CreateToken(claims)
79+
token, claims, err := utils.LoginToken(&user)
8880
if err != nil {
8981
global.GVA_LOG.Error("获取token失败!", zap.Error(err))
9082
response.FailWithMessage("获取token失败", c)
@@ -122,7 +114,7 @@ func (b *BaseApi) TokenNext(c *gin.Context, user system.SysUser) {
122114
response.FailWithMessage("jwt作废失败", c)
123115
return
124116
}
125-
if err := jwtService.SetRedisJWT(token, user.Username); err != nil {
117+
if err := jwtService.SetRedisJWT(token, user.GetUsername()); err != nil {
126118
response.FailWithMessage("设置登录状态失败", c)
127119
return
128120
}

server/model/system/sys_user.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@ import (
55
"github.com/gofrs/uuid/v5"
66
)
77

8+
type Login interface {
9+
GetUsername() string
10+
GetNickname() string
11+
GetUUID() uuid.UUID
12+
GetUserId() uint
13+
GetAuthorityId() uint
14+
GetUserInfo() any
15+
}
16+
17+
var _ Login = new(SysUser)
18+
819
type SysUser struct {
920
global.GVA_MODEL
1021
UUID uuid.UUID `json:"uuid" gorm:"index;comment:用户UUID"` // 用户UUID
@@ -25,3 +36,27 @@ type SysUser struct {
2536
func (SysUser) TableName() string {
2637
return "sys_users"
2738
}
39+
40+
func (s *SysUser) GetUsername() string {
41+
return s.Username
42+
}
43+
44+
func (s *SysUser) GetNickname() string {
45+
return s.NickName
46+
}
47+
48+
func (s *SysUser) GetUUID() uuid.UUID {
49+
return s.UUID
50+
}
51+
52+
func (s *SysUser) GetUserId() uint {
53+
return s.ID
54+
}
55+
56+
func (s *SysUser) GetAuthorityId() uint {
57+
return s.AuthorityId
58+
}
59+
60+
func (s *SysUser) GetUserInfo() any {
61+
return *s
62+
}

server/utils/claims.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package utils
22

33
import (
44
"github.com/flipped-aurora/gin-vue-admin/server/global"
5+
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
56
systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
67
"github.com/gin-gonic/gin"
78
"github.com/gofrs/uuid/v5"
@@ -123,3 +124,19 @@ func GetUserName(c *gin.Context) string {
123124
return waitUse.Username
124125
}
125126
}
127+
128+
func LoginToken(user system.Login) (token string, claims systemReq.CustomClaims, err error) {
129+
j := &JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
130+
claims = j.CreateClaims(systemReq.BaseClaims{
131+
UUID: user.GetUUID(),
132+
ID: user.GetUserId(),
133+
NickName: user.GetNickname(),
134+
Username: user.GetUsername(),
135+
AuthorityId: user.GetAuthorityId(),
136+
})
137+
token, err = j.CreateToken(claims)
138+
if err != nil {
139+
return
140+
}
141+
return
142+
}

0 commit comments

Comments
 (0)