Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LogoutMessage"/> class.
        /// </summary>
        /// <param name="request">The request.</param>
        public LogoutMessage(ValidatedEndSessionRequest request)
        {
            if (request != null)
            {
                if (request.Raw != null)
                {
                    Parameters = request.Raw.ToFullDictionary();
                }

                // optimize params sent to logout page, since we'd like to send them in URL (not as cookie)
                Parameters.Remove(OidcConstants.EndSessionRequest.IdTokenHint);
                Parameters.Remove(OidcConstants.EndSessionRequest.PostLogoutRedirectUri);
                Parameters.Remove(OidcConstants.EndSessionRequest.State);

                ClientId   = request.Client?.ClientId;
                ClientName = request.Client?.ClientName;
                SubjectId  = request.Subject?.GetSubjectId();
                SessionId  = request.SessionId;
                ClientIds  = request.ClientIds;

                if (request.PostLogOutUri != null)
                {
                    PostLogoutRedirectUri = request.PostLogOutUri;
                    if (request.State != null)
                    {
                        PostLogoutRedirectUri = PostLogoutRedirectUri.AddQueryString(OidcConstants.EndSessionRequest.State, request.State);
                    }
                }
            }
        }
 public LogoutMessage(ValidatedEndSessionRequest request)
 {
     if (request != null)
     {
         ClientId = request.Client?.ClientId;
         if (request.PostLogOutUri != null)
         {
             PostLogoutRedirectUri = request.PostLogOutUri;
             if (request.State != null)
             {
                 PostLogoutRedirectUri = PostLogoutRedirectUri.AddQueryString(OidcConstants.EndSessionRequest.State + "=" + request.State);
             }
         }
     }
 }
Exemple #3
0
        /// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
        /// <param name="isNew">是否插入</param>
        public override void Valid(Boolean isNew)
        {
            // 如果没有脏数据,则不需要进行任何处理
            if (!HasDirty)
            {
                return;
            }

            // 这里验证参数范围,建议抛出参数异常,指定参数名,前端用户界面可以捕获参数异常并聚焦到对应的参数输入框
            if (PostLogoutRedirectUri.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(PostLogoutRedirectUri), "PostLogoutRedirectUri不能为空!");
            }

            // 在新插入数据或者修改了指定字段时进行修正
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="LogoutMessage"/> class.
        /// </summary>
        /// <param name="request">The request.</param>
        public LogoutMessage(ValidatedEndSessionRequest request)
        {
            if (request != null)
            {
                if (request.Raw != null)
                {
                    // optimize params sent to logout page, since we'd like to send them in URL (not as cookie)
                    var optimizationParameters = new[]
                    {
                        OidcConstants.EndSessionRequest.IdTokenHint,
                        OidcConstants.EndSessionRequest.PostLogoutRedirectUri,
                        OidcConstants.EndSessionRequest.State
                    };

                    foreach (var(key, value) in request.Raw.ToDictionary())
                    {
                        if (!Parameters.ContainsKey(key) && !optimizationParameters.Contains(key))
                        {
                            Parameters.Add(key, value);
                        }
                    }
                }

                ClientId   = request.Client?.ClientId;
                ClientName = request.Client?.ClientName;
                SubjectId  = request.Subject?.GetSubjectId();
                SessionId  = request.SessionId;
                ClientIds  = request.ClientIds;

                if (request.PostLogOutUri != null)
                {
                    PostLogoutRedirectUri = request.PostLogOutUri;
                    if (request.State != null)
                    {
                        PostLogoutRedirectUri = PostLogoutRedirectUri.AddQueryString(OidcConstants.EndSessionRequest.State, request.State);
                    }
                }
            }
        }