Как настроить файл cookie для проверки подлинности ASP.NET Identity на определенную дату и время - PullRequest
0 голосов
/ 02 июля 2019

Этот ответ кажется довольно полным , но мое приложение использует ApplicationSignInManager вместо AuthenticationManager, которое использует ответ, поэтому оно не относится к моему приложению.

Я пытаюсь отследить свои логины пользователей (это частный веб-сайт, который будет использоваться клиентом внутри компании). Таким образом, клиент в основном хочет, чтобы логин работал как временная карта, чтобы начальник мог видеть, когда сотрудники приходят в офис.

Эта функциональность означает, что я не могу полагаться на постоянные входы в систему по умолчанию для поведения удостоверения ASP.NET, поскольку он не позволяет мне контролировать, если / когда истекает срок действия файла cookie для входа.

Что я хотел бы сделать, так это истечь куки в 4 утра каждый день, независимо от того, когда происходит вход в систему.

По этой причине, ограничение срока службы куки в конфигах на самом деле тоже не удовлетворяет моим требованиям.

Вот мой код для входа - довольно много стандартного. При первом ответе я надеялся, что смогу вставить срок действия cookie в метод SignIn, но, поскольку я использую не AuthenticationManager для входа в систему, похоже, нет способа сделать это с помощью мой текущий код.

var manager = Context.GetOwinContext().GetUserManager<UserManager>();
var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();

// Note that this always persists the login cookie.
var result = signinManager.PasswordSignIn(Email.Text, Password.Text, true, shouldLockout: false);

// Evaluation of result below

Если мне нужно изменить способ входа в систему, это нормально; Мне просто нужно несколько советов о том, какие изменения нужно внести (пример кода будет полезен).

Заранее спасибо!

1 Ответ

0 голосов
/ 03 июля 2019

Так как никто не потрудился внести свой вклад в мой вопрос, я попробовал кучу вещей и пришел к своему собственному ответу:

Похоже на ограничение продолжительности жизни куки в конфигах , так как ссылка в моем вопросе - путь.

В методе конфигурации auth я определяю, сколько часов существует между now и 4am tomorrow, затем я устанавливаю для этого файла cookie ExpireTimeSpan.

public void ConfigureAuth(IAppBuilder app)
{
    var expiryDate = DateTime.Now.Date.AddDays(1).AddHours(4);
    var ts = expiryDate - DateTime.Now;
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        ExpireTimeSpan = TimeSpan.FromHours(ts.Hours),
        LoginPath = new PathString("/Account/Login"),
        Provider = new CookieAuthenticationProvider
        {
            OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager, ApplicationUser>(
                validateInterval: TimeSpan.FromMinutes(30),
                regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
        }
    });
}
...