/// <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); } } } }
/// <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); } } } }