5
5
using System . Collections . Generic ;
6
6
using System . Linq ;
7
7
using System . Net . Http . Headers ;
8
+ using System . Security . Claims ;
8
9
using System . Threading . Tasks ;
9
10
using Microsoft . AspNetCore . Http ;
10
11
using Microsoft . AspNetCore . Http . Extensions ;
@@ -110,7 +111,7 @@ public static bool IsMediaTypeOctetOrMultipart(this HttpRequest request)
110
111
public static async Task < JObject > GetRequestAsJObject ( this HttpRequest request )
111
112
{
112
113
var jObjectHttp = new JObject ( ) ;
113
- jObjectHttp [ "Url" ] = $ "{ ( request . IsHttps ? "https" : "http" ) } ://{ request . Host . ToString ( ) } { request . Path . ToString ( ) } { request . QueryString . ToString ( ) } "; // [http|https]://{url}{path}{query}
114
+ jObjectHttp [ "Url" ] = $ "{ ( request . IsHttps ? "https" : "http" ) } ://{ request . Host . ToString ( ) } { request . Path . ToString ( ) } { request . QueryString . ToString ( ) } ";
114
115
jObjectHttp [ "Method" ] = request . Method . ToString ( ) ;
115
116
if ( request . Query != null )
116
117
{
@@ -131,7 +132,7 @@ public static async Task<JObject> GetRequestAsJObject(this HttpRequest request)
131
132
132
133
if ( request . HttpContext ? . User ? . Identities != null )
133
134
{
134
- jObjectHttp [ "Identities" ] = JsonConvert . SerializeObject ( request . HttpContext . User . Identities ) ;
135
+ jObjectHttp [ "Identities" ] = GetUserIdentitiesAsString ( request . HttpContext . User . Identities ) ;
135
136
}
136
137
137
138
// parse request body as content-type
@@ -165,5 +166,14 @@ internal static IDictionary<string, string> GetQueryCollectionAsDictionary(this
165
166
}
166
167
return queryParamsDictionary ;
167
168
}
169
+
170
+ internal static string GetUserIdentitiesAsString ( IEnumerable < ClaimsIdentity > claimsIdentities )
171
+ {
172
+ return JsonConvert . SerializeObject ( claimsIdentities , new JsonSerializerSettings
173
+ {
174
+ // Claims property in Identities had circular reference to property 'Subject'
175
+ ReferenceLoopHandling = ReferenceLoopHandling . Ignore
176
+ } ) ;
177
+ }
168
178
}
169
179
}
0 commit comments