@@ -11,17 +11,18 @@ import (
1111)
1212
1313type Config struct {
14- AuthenticationHeader bool `json:"authenticationHeader,omitempty"`
15- AuthenticationHeaderName string `json:"headerName,omitempty"`
16- BearerHeader bool `json:"bearerHeader,omitempty"`
17- BearerHeaderName string `json:"bearerHeaderName,omitempty"`
18- QueryParam bool `json:"queryParam,omitempty"`
19- QueryParamName string `json:"queryParamName,omitempty"`
20- PathSegment bool `json:"pathSegment,omitempty"`
21- Keys []string `json:"keys,omitempty"`
22- RemoveHeadersOnSuccess bool `json:"removeHeadersOnSuccess,omitempty"`
23- InternalForwardHeaderName string `json:"internalForwardHeaderName,omitempty"`
24- InternalErrorRoute string `json:"internalErrorRoute,omitempty"`
14+ AuthenticationHeader bool `json:"authenticationHeader,omitempty"`
15+ AuthenticationHeaderName string `json:"headerName,omitempty"`
16+ BearerHeader bool `json:"bearerHeader,omitempty"`
17+ BearerHeaderName string `json:"bearerHeaderName,omitempty"`
18+ QueryParam bool `json:"queryParam,omitempty"`
19+ QueryParamName string `json:"queryParamName,omitempty"`
20+ PathSegment bool `json:"pathSegment,omitempty"`
21+ removeQueryParamsOnSuccess bool `json:"removeQueryParamsOnSuccess,omitempty"`
22+ Keys []string `json:"keys,omitempty"`
23+ RemoveHeadersOnSuccess bool `json:"removeHeadersOnSuccess,omitempty"`
24+ InternalForwardHeaderName string `json:"internalForwardHeaderName,omitempty"`
25+ InternalErrorRoute string `json:"internalErrorRoute,omitempty"`
2526}
2627
2728type Response struct {
@@ -38,6 +39,7 @@ func CreateConfig() *Config {
3839 QueryParam : true ,
3940 QueryParamName : "token" ,
4041 PathSegment : true ,
42+ removeQueryParamsOnSuccess :false ,
4143 Keys : make ([]string , 0 ),
4244 RemoveHeadersOnSuccess : true ,
4345 InternalForwardHeaderName : "" ,
@@ -46,18 +48,19 @@ func CreateConfig() *Config {
4648}
4749
4850type KeyAuth struct {
49- next http.Handler
50- authenticationHeader bool
51- authenticationHeaderName string
52- bearerHeader bool
53- bearerHeaderName string
54- queryParam bool
55- queryParamName string
56- pathSegment bool
57- keys []string
58- removeHeadersOnSuccess bool
59- internalForwardHeaderName string
60- internalErrorRoute string
51+ next http.Handler
52+ authenticationHeader bool
53+ authenticationHeaderName string
54+ bearerHeader bool
55+ bearerHeaderName string
56+ queryParam bool
57+ queryParamName string
58+ pathSegment bool
59+ removeQueryParamsOnSuccess bool
60+ keys []string
61+ removeHeadersOnSuccess bool
62+ internalForwardHeaderName string
63+ internalErrorRoute string
6164}
6265
6366func New (ctx context.Context , next http.Handler , config * Config , name string ) (http.Handler , error ) {
@@ -74,18 +77,19 @@ func New(ctx context.Context, next http.Handler, config *Config, name string) (h
7477 }
7578
7679 return & KeyAuth {
77- next : next ,
78- authenticationHeader : config .AuthenticationHeader ,
79- authenticationHeaderName : config .AuthenticationHeaderName ,
80- bearerHeader : config .BearerHeader ,
81- bearerHeaderName : config .BearerHeaderName ,
82- queryParam : config .QueryParam ,
83- queryParamName : config .QueryParamName ,
84- pathSegment : config .PathSegment ,
85- keys : config .Keys ,
86- removeHeadersOnSuccess : config .RemoveHeadersOnSuccess ,
87- internalForwardHeaderName : config .InternalForwardHeaderName ,
88- internalErrorRoute : config .InternalErrorRoute ,
80+ next : next ,
81+ authenticationHeader : config .AuthenticationHeader ,
82+ authenticationHeaderName : config .AuthenticationHeaderName ,
83+ bearerHeader : config .BearerHeader ,
84+ bearerHeaderName : config .BearerHeaderName ,
85+ queryParam : config .QueryParam ,
86+ queryParamName : config .QueryParamName ,
87+ pathSegment : config .PathSegment ,
88+ removeQueryParamsOnSuccess : config.removeQueryParamsOnSuccess
89+ keys : config .Keys ,
90+ removeHeadersOnSuccess : config .RemoveHeadersOnSuccess ,
91+ internalForwardHeaderName : config .InternalForwardHeaderName ,
92+ internalErrorRoute : config .InternalErrorRoute ,
8993 }, nil
9094}
9195
@@ -166,7 +170,9 @@ func (ka *KeyAuth) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
166170 var qs = req .URL .Query ()
167171 var matchedKey = contains (qs .Get (ka .queryParamName ), ka .keys , true )
168172 if matchedKey != "" {
173+ if ka .removeQueryParamsOnSuccess {
169174 qs .Del (ka .queryParamName )
175+ }
170176 req .URL .RawQuery = qs .Encode ()
171177 ka .ok (rw , req , matchedKey )
172178 return
0 commit comments