/// <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;
		}
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
		/// <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;
		}