/// <summary> /// 执行中间件 /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task Invoke(HttpContext context) { using (var serviceScope = _ServiceProvider.CreateScope()) //手动高亮 { _DbCotext = serviceScope.ServiceProvider.GetService <Oauth2DbContext>(); context.Features.Set <IAuthenticationFeature>(new AuthenticationFeature { OriginalPath = context.Request.Path, OriginalPathBase = context.Request.PathBase }); IAuthenticationHandlerProvider handlers = context.RequestServices.GetRequiredService <IAuthenticationHandlerProvider>(); foreach (AuthenticationScheme scheme in await Schemes.GetRequestHandlerSchemesAsync()) { var handler = await handlers.GetHandlerAsync(context, scheme.Name) as IAuthenticationRequestHandler; if (handler != null && await handler.HandleRequestAsync()) { return; } } AuthenticationScheme defaultAuthenticate = await Schemes.GetDefaultAuthenticateSchemeAsync(); if (defaultAuthenticate != null) { AuthenticateResult result = await context.AuthenticateAsync(defaultAuthenticate.Name); if (result?.Principal != null) { context.User = result.Principal; } } if (!context.Request.Path.Equals(_TokenOptions.Path, StringComparison.OrdinalIgnoreCase)) { await _Next(context); return; } // Request must be POST with Content-Type: application/x-www-form-urlencoded if (!context.Request.Method.Equals("POST", StringComparison.OrdinalIgnoreCase) || !context.Request.HasFormContentType) { await ReturnBadRequest(context); return; } //返回Token await GenerateAuthorizedResult(context); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ApiScopeController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ApiSecretController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientPostLogoutRedirectUriController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> /// <param name="logger"></param> public AccountController(Oauth2DbContext dbContext, ILogger <AccountController> logger) { _DbContext = dbContext; _Logger = logger; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public IdentityResourceController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public InitController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public UserController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientScopeController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public IdentityClaimController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ApiRsourceController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public LogController(Oauth2DbContext dbContext, ILogger <LogController> logger) { _DbContext = dbContext; _Logger = logger; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientGrantTypeController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientCliamController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientCorsOriginController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientSecretController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientIdPRestrictionController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public DeviceFlowCodesController(Oauth2DbContext dbContext) { _DbContext = dbContext; }
/// <summary> /// 构造函数 /// </summary> /// <param name="dbContext"></param> public ClientPropertyController(Oauth2DbContext dbContext) { _DbContext = dbContext; }