2015-11-06 71 views
1

在我的ASP.NET Web API應用程序我建立一個自定義的JsonConverter任何DateTime字符串轉換爲JSON對象DateTimeOffset,使用登錄用戶的偏移。如何獲取自定義JsonConverter中的當前IPrincipal?

this articleIPrincipal正在在序列化過程復位已經閱讀。

溶液中this article,我在我的應用程序中實現提供。

作者沒有提及的是如何在JsonConverter的ReadJson()方法內實際檢索IPrincipal

所以我現在困在這裏。

internal class CustomDateTimeOffsetConverter : JsonConverter 
{ 
    public override void WriteJson(JsonWriter writer, 
            object value, 
            JsonSerializer serializer) 
    { 
     if (value is DateTimeOffset) 
     { 
      var date = (DateTimeOffset)value; 
      value = date.LocalDateTime; 
     } 
     serializer.Serialize(writer, value); 
    } 

    public override object ReadJson(JsonReader reader, 
            Type objectType, 
            object existingValue, 
            JsonSerializer serializer) 
    { 
     if (existingValue is DateTimeOffset) 
     { 
      // How to get the current logged in IPrincipal? 
      // var user = ... 
     } 

    } 

    public override bool CanConvert(Type objectType) 
    { 
     return true; 
    } 
} 

回答

0

試試這個

var requestContext = System.Web.DynamicData.DynamicDataRouteHandler.GetRequestContext(System.Web.HttpContext.Current); 
var user = requestContext.HttpContext.User; 
相關問題