Создание основного сеанса asp.net с аутентификацией Windows - PullRequest
0 голосов
/ 01 мая 2018

Я использую проверку подлинности Windows для основного веб-приложения asp.net в интрасети, работающего за IIS.
Я хотел бы зарегистрировать событие, когда пользователь обращается к приложению и создается сеанс.

Некоторые из служб аутентификации предоставляют способ добавить обработчик событий для таких событий, как «OnSigningIn», «OnSignedIn», «OnTokenvalidated» и т. Д., К параметрам при настройке этих служб.

Есть ли способ сделать что-то подобное при использовании аутентификации Windows через services.AddAuthentication (IISDefaults.AuthenticationScheme) или services.AddSession (), или каким-либо другим способом?

1 Ответ

0 голосов
/ 01 мая 2018

Проверка подлинности Windows происходит на уровне IIS, прежде чем ASP.NET Core даже увидит запрос, поэтому для него нет событий, которые вы могли бы обработать. У сеансов также нет событий.

Вы можете внедрить простое промежуточное программное обеспечение, как только вы введете регистратор в Startup,

public class Startup
{
    private readonly ILogger<Startup> _logger;

    public IConfiguration Configuration { get; }

    public Startup(ILogger<Startup> logger, IConfiguration configuration)
    {
        _logger = logger;
        Configuration = configuration;
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // The typical startup crud, then

        app.Use(async (context, next) =>
        {
            int logged = context.Session.GetInt32("Logged") ?? 0;
            if (visits == 0 && CheckIfThisRequestNeedsToUseSession(context))
            {
                // New session
                // Log with _logger, then mark so it doesn't repeat
                context.Session.SetInt32("IKnowYou", 1);
                // ...
            }
            await next();
        });
        // …
    }
}
...