4
4
"errors"
5
5
"github.com/gin-gonic/gin"
6
6
"gopkg.in/dgrijalva/jwt-go.v3"
7
- "log"
8
7
"net/http"
9
8
"strings"
10
9
"time"
@@ -65,17 +64,6 @@ type Login struct {
65
64
66
65
// MiddlewareInit initialize jwt configs.
67
66
func (mw * GinJWTMiddleware ) MiddlewareInit () error {
68
- if mw .Realm == "" {
69
- return errors .New ("realm is required" )
70
- }
71
-
72
- if mw .Authenticator == nil {
73
- return errors .New ("authenticator is required" )
74
- }
75
-
76
- if mw .Key == nil {
77
- return errors .New ("secret key is required" )
78
- }
79
67
80
68
if mw .SigningAlgorithm == "" {
81
69
mw .SigningAlgorithm = "HS256"
@@ -100,13 +88,28 @@ func (mw *GinJWTMiddleware) MiddlewareInit() error {
100
88
}
101
89
}
102
90
91
+ if mw .Realm == "" {
92
+ return errors .New ("realm is required" )
93
+ }
94
+
95
+ if mw .Authenticator == nil {
96
+ return errors .New ("authenticator is required" )
97
+ }
98
+
99
+ if mw .Key == nil {
100
+ return errors .New ("secret key is required" )
101
+ }
102
+
103
103
return nil
104
104
}
105
105
106
106
// MiddlewareFunc makes GinJWTMiddleware implement the Middleware interface.
107
107
func (mw * GinJWTMiddleware ) MiddlewareFunc () gin.HandlerFunc {
108
108
if err := mw .MiddlewareInit (); err != nil {
109
- log .Fatal (err .Error ())
109
+ return func (c * gin.Context ) {
110
+ mw .unauthorized (c , http .StatusInternalServerError , err .Error ())
111
+ return
112
+ }
110
113
}
111
114
112
115
return func (c * gin.Context ) {
@@ -286,6 +289,11 @@ func (mw *GinJWTMiddleware) parseToken(c *gin.Context) (*jwt.Token, error) {
286
289
}
287
290
288
291
func (mw * GinJWTMiddleware ) unauthorized (c * gin.Context , code int , message string ) {
292
+
293
+ if mw .Realm == "" {
294
+ mw .Realm = "gin jwt"
295
+ }
296
+
289
297
c .Header ("WWW-Authenticate" , "JWT realm=" + mw .Realm )
290
298
c .Abort ()
291
299
0 commit comments