コード例 #1
0
ファイル: IdentityUserStore.cs プロジェクト: lr030/ML
        public Task AddLoginAsync(IdentityUser user, UserLoginInfo login, CancellationToken cancellationToken) =>
        Task.Run(() =>
        {
            if (Base.Host.IsDevelopment)
            {
                Base.Current.Log.KeyValuePair(MethodBase.GetCurrentMethod().Name, new { user, login }.ToJson(), Message.EContentType.Info);
            }

            var key = login.StampValue();

            var claimsIdentity = (ClaimsIdentity)((ExternalLoginInfo)login).Principal.Identity;
            var claimDict      = new Dictionary <string, string>();

            foreach (var claim in claimsIdentity.Claims.ToList().Where(claim => !claimDict.ContainsKey(claim.Type)))
            {
                claimDict[claim.Type] = claim.Value;
            }

            var entry = new Model.Identity
            {
                Id              = key,
                IdentityUser    = user,
                Name            = claimsIdentity.Name,
                Claims          = claimDict,
                IsAuthenticated = claimsIdentity.IsAuthenticated,
                Label           = claimsIdentity.Label,
                LoginProvider   = login.LoginProvider,
                ProviderKey     = login.ProviderKey
            };

            entry.Save();
        }, cancellationToken);