@@ -3,7 +3,7 @@ package jwt
3
3
import (
4
4
"errors"
5
5
"github.com/gin-gonic/gin"
6
- "gopkg.in/dgrijalva/jwt-go.v2 "
6
+ "gopkg.in/dgrijalva/jwt-go.v3 "
7
7
"log"
8
8
"net/http"
9
9
"strings"
@@ -123,8 +123,10 @@ func (mw *GinJWTMiddleware) middlewareImpl(c *gin.Context) {
123
123
return
124
124
}
125
125
126
- id := token .Claims ["id" ].(string )
127
- c .Set ("JWT_PAYLOAD" , token .Claims )
126
+ claims := token .Claims .(jwt.MapClaims )
127
+
128
+ id := claims ["id" ].(string )
129
+ c .Set ("JWT_PAYLOAD" , claims )
128
130
c .Set ("userID" , id )
129
131
130
132
if ! mw .Authorizator (id , c ) {
@@ -159,10 +161,11 @@ func (mw *GinJWTMiddleware) LoginHandler(c *gin.Context) {
159
161
160
162
// Create the token
161
163
token := jwt .New (jwt .GetSigningMethod (mw .SigningAlgorithm ))
164
+ claims := token .Claims .(jwt.MapClaims )
162
165
163
166
if mw .PayloadFunc != nil {
164
167
for key , value := range mw .PayloadFunc (loginVals .Username ) {
165
- token . Claims [key ] = value
168
+ claims [key ] = value
166
169
}
167
170
}
168
171
@@ -171,9 +174,9 @@ func (mw *GinJWTMiddleware) LoginHandler(c *gin.Context) {
171
174
}
172
175
173
176
expire := time .Now ().Add (mw .Timeout )
174
- token . Claims ["id" ] = userId
175
- token . Claims ["exp" ] = expire .Unix ()
176
- token . Claims ["orig_iat" ] = time .Now ().Unix ()
177
+ claims ["id" ] = userId
178
+ claims ["exp" ] = expire .Unix ()
179
+ claims ["orig_iat" ] = time .Now ().Unix ()
177
180
178
181
tokenString , err := token .SignedString (mw .Key )
179
182
@@ -193,8 +196,9 @@ func (mw *GinJWTMiddleware) LoginHandler(c *gin.Context) {
193
196
// Reply will be of the form {"token": "TOKEN"}.
194
197
func (mw * GinJWTMiddleware ) RefreshHandler (c * gin.Context ) {
195
198
token , _ := mw .parseToken (c )
199
+ claims := token .Claims .(jwt.MapClaims )
196
200
197
- origIat := int64 (token . Claims ["orig_iat" ].(float64 ))
201
+ origIat := int64 (claims ["orig_iat" ].(float64 ))
198
202
199
203
if origIat < time .Now ().Add (- mw .MaxRefresh ).Unix () {
200
204
mw .unauthorized (c , http .StatusUnauthorized , "Token is expired." )
@@ -203,15 +207,16 @@ func (mw *GinJWTMiddleware) RefreshHandler(c *gin.Context) {
203
207
204
208
// Create the token
205
209
newToken := jwt .New (jwt .GetSigningMethod (mw .SigningAlgorithm ))
210
+ newClaims := newToken .Claims .(jwt.MapClaims )
206
211
207
- for key := range token . Claims {
208
- newToken . Claims [key ] = token . Claims [key ]
212
+ for key := range claims {
213
+ newClaims [key ] = claims [key ]
209
214
}
210
215
211
216
expire := time .Now ().Add (mw .Timeout )
212
- newToken . Claims ["id" ] = token . Claims ["id" ]
213
- newToken . Claims ["exp" ] = expire .Unix ()
214
- newToken . Claims ["orig_iat" ] = origIat
217
+ newClaims ["id" ] = claims ["id" ]
218
+ newClaims ["exp" ] = expire .Unix ()
219
+ newClaims ["orig_iat" ] = origIat
215
220
216
221
tokenString , err := newToken .SignedString (mw .Key )
217
222
@@ -227,31 +232,32 @@ func (mw *GinJWTMiddleware) RefreshHandler(c *gin.Context) {
227
232
}
228
233
229
234
// ExtractClaims help to extract the JWT claims
230
- func ExtractClaims (c * gin.Context ) map [ string ] interface {} {
235
+ func ExtractClaims (c * gin.Context ) jwt. MapClaims {
231
236
232
237
if _ , exists := c .Get ("JWT_PAYLOAD" ); ! exists {
233
- emptyClaims := make (map [ string ] interface {} )
238
+ emptyClaims := make (jwt. MapClaims )
234
239
return emptyClaims
235
240
}
236
241
237
242
jwtClaims , _ := c .Get ("JWT_PAYLOAD" )
238
243
239
- return jwtClaims .(map [ string ] interface {} )
244
+ return jwtClaims .(jwt. MapClaims )
240
245
}
241
246
242
247
// TokenGenerator handler that clients can use to get a jwt token.
243
248
func (mw * GinJWTMiddleware ) TokenGenerator (userID string ) string {
244
249
token := jwt .New (jwt .GetSigningMethod (mw .SigningAlgorithm ))
250
+ claims := token .Claims .(jwt.MapClaims )
245
251
246
252
if mw .PayloadFunc != nil {
247
253
for key , value := range mw .PayloadFunc (userID ) {
248
- token . Claims [key ] = value
254
+ claims [key ] = value
249
255
}
250
256
}
251
257
252
- token . Claims ["id" ] = userID
253
- token . Claims ["exp" ] = time .Now ().Add (mw .Timeout ).Unix ()
254
- token . Claims ["orig_iat" ] = time .Now ().Unix ()
258
+ claims ["id" ] = userID
259
+ claims ["exp" ] = time .Now ().Add (mw .Timeout ).Unix ()
260
+ claims ["orig_iat" ] = time .Now ().Unix ()
255
261
256
262
tokenString , _ := token .SignedString (mw .Key )
257
263
0 commit comments