Ejemplo n.º 1
0
        /// <summary>
        /// 会话合法性验证
        /// </summary>
        /// <param name="call">CallManage</param>
        /// <param name="verifyurl">验证服务URL</param>
        /// <param name="aid">操作权限代码,默认为空(不进行鉴权)</param>
        /// <param name="limit">限制访问时间间隔(秒),默认不启用</param>
        public Verify(CallManage call, string verifyurl, string aid = null, int limit = 0)
        {
            if (!GetToken())
            {
                Result.InvalidAuth();
                return;
            }

            if (call != null && limit > 0)
            {
                var key  = Util.Hash(Token.id.ToString() + _Uri.Data);
                var time = call.LimitCall(key, limit);
                if (time > 0)
                {
                    Result.TooFrequent(time.ToString());
                    return;
                }
            }

            var url     = $"{verifyurl}?action={aid}";
            var request = new HttpRequest(AccessToken);

            if (!request.Send(url))
            {
                Result.BadRequest(request.Message);
                return;
            }

            Result = Util.Deserialize <Result <object> >(request.Data);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 通过Access Token校验是否有权限访问
        /// </summary>
        /// <param name="verifyurl">验证服务URL</param>
        /// <param name="limit">限制调用时间间隔(秒),默认不启用</param>
        /// <param name="anonymous">是否允许匿名访问(默认不允许)</param>
        public Verify(string verifyurl, int limit = 0, bool anonymous = false)
        {
            if (anonymous)
            {
                if (!GetToken())
                {
                    Result.InvalidAuth();
                    return;
                }

                Result = new HttpClient(verifyurl).Request(Token);
                if (Result.Successful)
                {
                    return;
                }

                var time = CallManage.LimitCall(limit <= 0 ? 60 : limit);
                if (time > 0)
                {
                    Result.TooFrequent(time);
                    return;
                }

                Result.Success();
            }
            else
            {
                var time = CallManage.LimitCall(limit);
                if (time > 0)
                {
                    Result.TooFrequent(time);
                    return;
                }

                if (!GetToken())
                {
                    Result.InvalidAuth();
                    return;
                }

                Result = new HttpClient(verifyurl).Request(Token);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 带鉴权的会话合法性验证
        /// </summary>
        /// <param name="verifyurl">验证服务URL</param>
        /// <param name="aid">操作ID</param>
        /// <param name="limit">限制调用时间间隔(秒),默认不启用</param>
        public Verify(string verifyurl, Guid aid, int limit = 0)
        {
            var time = CallManage.LimitCall(limit);

            if (time > 0)
            {
                Result.TooFrequent(time);
                return;
            }

            if (!GetToken())
            {
                Result.InvalidAuth();
                return;
            }

            var url = $"{verifyurl}/auth?action={aid}";

            Result = new HttpClient(url).Request(Token);
        }