/// <summary> /// 从Url中的参数中,检查访问票据 /// </summary> /// <param name="matchedUrl">需要匹配的url,如果为null,表示不需要检查</param> /// <param name="urlCheckParts">Url中需要检查的部分</param> /// <param name="timeout">有效期</param> public static AccessTicket CheckAccessTicket(Uri matchedUrl, AccessTicketUrlCheckParts urlCheckParts, TimeSpan timeout) { AccessTicket ticket = GetAccessTicket(); (ticket == null).TrueThrow<AccessTicketCheckException>(Translator.Translate(Define.DefaultCategory, "您没有权限访问此页面")); (ticket.TimeStampIsValid(timeout)).FalseThrow<AccessTicketCheckException> (Translator.Translate(Define.DefaultCategory, "访问票据已经过期,您没有权限访问此页面")); if (matchedUrl != null) ticket.UrlIsValid(matchedUrl, urlCheckParts).FalseThrow<AccessTicketCheckException> (Translator.Translate(Define.DefaultCategory, "票据中的地址不匹配,您没有权限访问此页面")); return ticket; }
/// <summary> /// 从Url中的参数中,检查访问票据 /// </summary> /// <param name="matchedUrl">需要匹配的url,如果为null,表示不需要检查</param> /// <param name="urlCheckParts">Url中需要检查的部分</param> /// <param name="timeout">有效期</param> public static AccessTicket CheckAccessTicket(Uri matchedUrl, AccessTicketUrlCheckParts urlCheckParts, TimeSpan timeout) { AccessTicket ticket = GetAccessTicket(); (ticket == null).TrueThrow <AccessTicketCheckException>(Translator.Translate(Define.DefaultCategory, "您没有权限访问此页面")); (ticket.TimeStampIsValid(timeout)).FalseThrow <AccessTicketCheckException> (Translator.Translate(Define.DefaultCategory, "访问票据已经过期,您没有权限访问此页面")); if (matchedUrl != null) { ticket.UrlIsValid(matchedUrl, urlCheckParts).FalseThrow <AccessTicketCheckException> (Translator.Translate(Define.DefaultCategory, "票据中的地址不匹配,您没有权限访问此页面")); } return(ticket); }
/// <summary> /// 目标Url是否合法 /// </summary> /// <param name="destUrl"></param> /// <param name="urlCheckParts">需要检查的url中的部分</param> /// <returns></returns> public bool UrlIsValid(Uri destUrl, AccessTicketUrlCheckParts urlCheckParts) { bool result = true; if (this.DestinationUrl.IsNotEmpty()) { Uri uri1 = new Uri(this.DestinationUrl, UriKind.RelativeOrAbsolute); if ((urlCheckParts & AccessTicketUrlCheckParts.SchemeHostAndPort) != AccessTicketUrlCheckParts.None) { result = uri1.CompareSchemeAndHost(destUrl); } if (result && (urlCheckParts & AccessTicketUrlCheckParts.PathAndParameters) != AccessTicketUrlCheckParts.None) { result = uri1.ComparePathAndParameters(destUrl, AccessTicket.AccessTicketParamName); } } return(result); }
/// <summary> /// 目标Url是否合法 /// </summary> /// <param name="destUrl"></param> /// <param name="urlCheckParts">需要检查的url中的部分</param> /// <returns></returns> public bool UrlIsValid(Uri destUrl, AccessTicketUrlCheckParts urlCheckParts) { bool result = true; if (this.DestinationUrl.IsNotEmpty()) { Uri uri1 = new Uri(this.DestinationUrl, UriKind.RelativeOrAbsolute); if ((urlCheckParts & AccessTicketUrlCheckParts.SchemeHostAndPort) != AccessTicketUrlCheckParts.None) result = uri1.CompareSchemeAndHost(destUrl); if (result && (urlCheckParts & AccessTicketUrlCheckParts.PathAndParameters) != AccessTicketUrlCheckParts.None) result = uri1.ComparePathAndParameters(destUrl, AccessTicket.AccessTicketParamName); } return result; }