示例#1
0
        public static FileIndexKeyValueStorage <TKey, TValue> Open(
            string filename,
            AccessStrategy strategy              = AccessStrategy.MemoryMapped,
            ISerializer <TValue> serializer      = null,
            IIndexSerializer <TKey> indexFactory = null,
            Policy policy = null)
        {
            var fi     = new FileInfo(filename);
            var reader = GetReaderForStrategy(strategy, fi);

            if (policy != null)
            {
                reader = new PolicyStore(reader, policy);
            }

            return(new FileIndexKeyValueStorage <TKey, TValue>(fi, reader, serializer, indexFactory));
        }
示例#2
0
        protected override async Task HandleRequirementAsync(
            AuthorizationHandlerContext context,
            RiskRequirement requirement
            )
        {
            if (context.Resource is AuthorizationFilterContext mvcContext)
            {
                var user = context.User.FindFirstValue("name");
                var role = context.User.FindFirstValue(ClaimTypes.Role);
                var(mandatory, discretionary) = PolicyStore.GetAuthorizationScheme(mvcContext.RouteData);
                var riskScore = await _riskService.DetermineRisk(user, role, mandatory, discretionary);

                mvcContext.HttpContext.Items["risk"] = riskScore;
                if (riskScore < requirement.MaximumRisk)
                {
                    context.Succeed(requirement);
                    return;
                }
            }
            context.Fail();
        }