public async Task Invoke(HttpContext context) { DownstreamRouteFinder downstreamRouteFinder = new DownstreamRouteFinder(_urlMatcher, _urlPathPlaceholderNameAndValueFinder); DownstreamRoute route = downstreamRouteFinder.FindDownstreamRoute(context.Request.Path.ToString(), context.Request.Method, _ocelotConfigurationProvider.Get().Result.Data, context.Request.Headers["Host"]).Data; if (route.ReRoute.IsAuthenticated) { string token = context.Request.Headers["Token"]; if (string.IsNullOrEmpty(token)) { AuthenticateResult.Fail("Unauthorized"); context.Response.StatusCode = 401; //Unauthorized return; } var claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.Name, "Shanzm")); claims.Add(new Claim(ClaimTypes.Role, "Users")); var identity = new ClaimsIdentity(claims, "WapIdentity"); context.User = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(context.User, new AuthenticationProperties(), "WapScheme"); AuthenticateResult.Success(ticket); } await _next(context); }
/// <summary> /// 初始化路由信息 /// </summary> /// <param name="context"></param> private void MapDownstreamContextAsync(DownstreamContext context) { //1初始化配置文件 context.Configuration = InternalConfigurationHelper.Instance().GetConfiguration(); //2初始化下游请求对象 DownstreamRequestMapper requestMapper = new DownstreamRequestMapper(context.HttpContext.Request); var downstreamRequest = requestMapper.Create(); //如果有错误,把错误信息加载到context if (requestMapper.IsError) { SetPipelineError(context, requestMapper.GetError()); return; } context.DownstreamRequest = downstreamRequest; //3查找下游请求路由 DownstreamRouteFinder downstreamRouteFinder = new DownstreamRouteFinder(); var downstreamRoute = downstreamRouteFinder.Get(context); if (downstreamRouteFinder.IsError) { SetPipelineError(context, downstreamRouteFinder.GetError()); return; } context.DownstreamRoute = downstreamRoute; //4下游请求改写 ResetDownsteamRequest(context); }