哪一行源代码设置了“context.Authentication.User”和“IsAuthenticated”属性

时间:2016-04-14 03:48:37

标签: asp.net owin

我阅读了asp.net katana项目的源代码。您能否告诉我哪一行源代码设置了“context.Authentication.User”和“IsAuthenticated”属性? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我找到以下代码:

public void AddUserIdentity(IIdentity identity)
    {
        if (identity == null)
        {
            throw new ArgumentNullException("identity");
        }
        var newClaimsPrincipal = new ClaimsPrincipal(identity);

        IPrincipal existingPrincipal = _context.Request.User;
        if (existingPrincipal != null)
        {
            var existingClaimsPrincipal = existingPrincipal as ClaimsPrincipal;
            if (existingClaimsPrincipal == null)
            {
                IIdentity existingIdentity = existingPrincipal.Identity;
                if (existingIdentity.IsAuthenticated)
                {
                    newClaimsPrincipal.AddIdentity(existingIdentity as ClaimsIdentity ?? new ClaimsIdentity(existingIdentity));
                }
            }
            else
            {
                foreach (var existingClaimsIdentity in existingClaimsPrincipal.Identities)
                {
                    if (existingClaimsIdentity.IsAuthenticated)
                    {
                        newClaimsPrincipal.AddIdentity(existingClaimsIdentity);
                    }
                }
            }
        }
        _context.Request.User = newClaimsPrincipal;
    }