From 0fd65b0c3a96e27d405b14c9ad9e3c938d45bbd0 Mon Sep 17 00:00:00 2001 From: lishimeng <316527907@qq.com> Date: Tue, 3 Aug 2021 13:05:48 +0800 Subject: [PATCH] add ResponseTokenHandler when respose token to the browser --- server/handler.go | 3 +++ server/server.go | 4 ++++ server/server_config.go | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/server/handler.go b/server/handler.go index e27939b..ad2cc18 100755 --- a/server/handler.go +++ b/server/handler.go @@ -44,6 +44,9 @@ type ( // ExtensionFieldsHandler in response to the access token with the extension of the field ExtensionFieldsHandler func(ti oauth2.TokenInfo) (fieldsValue map[string]interface{}) + + // ResponseTokenHandler response token handing + ResponseTokenHandler func(w http.ResponseWriter, data map[string]interface{}, header http.Header, statusCode ...int) error ) // ClientFormHandler get client data from form diff --git a/server/server.go b/server/server.go index 643ab30..c52a51a 100755 --- a/server/server.go +++ b/server/server.go @@ -54,6 +54,7 @@ type Server struct { ExtensionFieldsHandler ExtensionFieldsHandler AccessTokenExpHandler AccessTokenExpHandler AuthorizeScopeHandler AuthorizeScopeHandler + ResponseTokenHandler ResponseTokenHandler } func (s *Server) redirectError(w http.ResponseWriter, req *AuthorizeRequest, err error) error { @@ -81,6 +82,9 @@ func (s *Server) tokenError(w http.ResponseWriter, err error) error { } func (s *Server) token(w http.ResponseWriter, data map[string]interface{}, header http.Header, statusCode ...int) error { + if fn := s.ResponseTokenHandler; fn != nil { + return fn(w, data, header, statusCode...) + } w.Header().Set("Content-Type", "application/json;charset=UTF-8") w.Header().Set("Cache-Control", "no-store") w.Header().Set("Pragma", "no-cache") diff --git a/server/server_config.go b/server/server_config.go index e0d7d1d..934c543 100644 --- a/server/server_config.go +++ b/server/server_config.go @@ -84,3 +84,8 @@ func (s *Server) SetAccessTokenExpHandler(handler AccessTokenExpHandler) { func (s *Server) SetAuthorizeScopeHandler(handler AuthorizeScopeHandler) { s.AuthorizeScopeHandler = handler } + +// SetResponseTokenHandler response token handing +func (s *Server) SetResponseTokenHandler(handler ResponseTokenHandler) { + s.ResponseTokenHandler = handler +} \ No newline at end of file