2015-11-06 48 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; 
相关问题