У меня есть атрибут [Authorize] на моем контроллере веб-приложения, поэтому любые попадания в конечные точки гарантируют, что пользователь сначала будет перенаправлен для входа на сервер OAuth (если он еще не вошел в систему).
Теперь я хочу начать писать заявки пользователей в базу данных веб-приложения каждый раз, когда пользователь входит в систему. Для этого мне нужно иметь некоторый код, который запускается в веб-приложении каждый раз, когда пользователь успешно входит в систему / авторизуется.
Мне дали понять, что это включает добавление специального промежуточного программного обеспечения.
Мой код Startup ConfigureServices в настоящее время выглядит следующим образом:
public class Startup
{
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
Configuration = configuration;
Env = env;
}
public IHostingEnvironment Env { get; }
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Adds a default in-memory implementation of IDistributedCache.
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.Cookie.HttpOnly = true;
});
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.SignInScheme = "Cookies";
options.Authority = Configuration["auth:oidc:authority"];
options.RequireHttpsMetadata = !Env.IsDevelopment();
options.ClientId = Configuration["auth:oidc:clientid"];
options.ClientSecret = Configuration["auth:oidc:clientsecret"];
options.ResponseType = "code id_token";
options.Scope.Add(Configuration["auth:oidc:clientid"]);
options.Scope.Add("offline_access");
options.GetClaimsFromUserInfoEndpoint = true;
options.SaveTokens = true;
});
}
... []
Итак, мой вопрос: какой код мне нужно добавить и где, чтобы вызвать метод, который будет содержать мое настраиваемое действие?