使用额外属性将IMdentIdentity投射到IMyIdentity

时间:2012-01-23 00:21:45

标签: c# asp.net-mvc

我必须将IIdentity(System.Security.Principal.IIdentity)扩展到IMyIdentity以及以下几个属性

public interface IMyIdentity : IIdentity
{
    public bool IsXyz {get;}
    public bool IsAbc {get;}
}

现在我以前执行

HttpContext.Current.User.Identity as IIdentity

它过去工作正常,但现在我执行

HttpContext.Current.User.Identity as IMyIdentity

它没有工作并且转换为null,这对我来说是一个问题

整个方法块如下所示

        public virtual IMyIdentity GetCurrentUserIdentity(bool ignoreXyz)
        {
            if (_userProfile != null && _userProfile.IsAnonymous && (ignoreXyz || _userProfile.PointId > 0))
            {
                return new UserIdentity
                           {
                               Name = _userProfile.UserName,
                               IsAuthenticated = true,
                               AuthenticationType = UserIdentity.AUTHENTICATION_ANONYMOUS
                           };
            }
            else
            {
                return HttpContext.Current.User.Identity as IMyIdentity;
            }
        }

请您告诉我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我终于想到将HttpContext.Current.User.Identity的属性转换为我的类型,如下所示

public virtual IMyIdentity GetCurrentUserIdentity(bool ignoreXyz)
{
    if (_userProfile != null && _userProfile.IsAnonymous && (ignoreXyz || _userProfile.PointId > 0))
    {
        return new UserIdentity
                   {
                       Name = _userProfile.UserName,
                       IsAuthenticated = true,
                       AuthenticationType = UserIdentity.AUTHENTICATION_ANONYMOUS
                   };
    }
    else
    {
        return new UserIdentity
                   {
                       Name = HttpContext.Current.User.Identity.UserName,
                       IsAuthenticated = HttpContext.Current.User.Identity.IsAuthenticated,
                       AuthenticationType = HttpContext.Current.User.Identity.AuthenticationType
                   };                           
    }
}