コード例 #1
0
        /// <summary>
        /// 验证滑条是否有效
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task <bool> VerificationAsync(ValidationModel <int[]> data)
        {
            // 审查会话安全性
            await VerificationActionAsync(data.ActionData);

            return(await _sliderVerificationProvider.VerificationAsync(data));
        }
コード例 #2
0
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            var _verifyPictureAppService = context.HttpContext.RequestServices.GetService(typeof(ISliderAppService)) as ISliderAppService;
            var data = context.HttpContext.Request.Headers.FirstOrDefault(c => c.Key == "Data");

            var actionData = new SliderActionModel(context.HttpContext.Connection.RemoteIpAddress.ToString());

            if (data.Key.IsNullOrWhiteSpace())
            {
                var token = context.HttpContext.Request.Headers.FirstOrDefault(c => c.Key == "Token");
                if (token.Key.IsNullOrWhiteSpace())
                {
                    var valTokendata = new ValidationModel <string>(token.Value, actionData);
                    if (!await _verifyPictureAppService.VerificationTokenAsync(valTokendata))
                    {
                        throw new UserFriendlyException("The verification code is wrong!");
                    }
                }
                throw new UserFriendlyException("The verification code is not valid!");
            }

            var valdata = new ValidationModel <int[]>(Array.ConvertAll(data.Value.ToString().Split(','), int.Parse), actionData);

            if (!await _verifyPictureAppService.VerificationAsync(valdata))
            {
                throw new UserFriendlyException("The verification code is wrong!");
            }
            await next();
        }
コード例 #3
0
        /// <summary>
        /// 获取滑条验证令牌
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task <string> GetVerificationTokenAsync(ValidationModel <string> data)
        {
            // 审查会话安全性
            await VerificationActionAsync(data.ActionData);

            // 缓存会话
            var id = GuidGenerator.Create().ToString();
            await _cacheToken.SetAsync(id, new SliderActionTokenCacheModel(data.ActionData.Ip));

            return(id);
        }
コード例 #4
0
        /// <summary>
        /// 验证滑条是否有效
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task <bool> VerificationTokenAsync(ValidationModel <string> data)
        {
            // 审查会话安全性
            await VerificationActionAsync(data.ActionData);

            var result = await _cacheToken.GetAsync(data.Data);

            if (result != null)
            {
                // 验证IP同源
                return(result.Ip == data.ActionData.Ip);
            }
            return(false);
        }
コード例 #5
0
        /// <summary>
        /// 验证滑条是否有效
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task <bool> VerificationAsync(ValidationModel <int[]> data)
        {
            // 判断数字滑动速率是否超出正常值
            if (!await VerificationAverage(data.Data))
            {
                return(false);
            }

            // 判断数字速率是否由慢变快
            if (!VerificationSpeed(data.Data))
            {
                return(false);
            }
            // 根
            return(true);
        }
コード例 #6
0
 public async Task <bool> VerificationAsync(ValidationModel <int[]> input)
 {
     return(await _silderManager.VerificationAsync(input));
 }
コード例 #7
0
 public async Task <bool> VerificationTokenAsync(ValidationModel <string> input)
 {
     return(await _silderManager.VerificationTokenAsync(input));
 }