Аутентификация ядра.net не всегда работает

У меня есть веб-приложение.net core 2, которое использует аутентификацию Google. Иногда я замечал, что кажется, что срок действия oauth истек, потому что есть части приложения, такие как навигационная панель, которые обернуты в зарегистрированную проверку, такую ​​как...

@if (viewModel.LoggedIn)
{
  <nav></nav>
}

Это определяется как таковой...

var _pageBase = new PageBaseViewModel
{
    LoggedIn = HttpContext.User.Identity.IsAuthenticated)
};
ViewData["PageBaseViewModel"] = _pageBase;

Похоже, это работает нормально, скрывая навигацию, если пользователь не вошел в систему. Однако у меня есть атрибут Authorize на моем контроллере, и хотя nav не отображается, остальная часть страницы появляется, даже если она должна быть перенаправлена ​​на страница входа.

В моем стартапе я настроил его так.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseAuthentication();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            "default",
            "{controller=Dashboard}/{action=Index}/{id?}");
    });
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication()
        .AddGoogle(googleOptions =>
        {
            googleOptions.ClientId = secrets.GoogleClientId;
            googleOptions.ClientSecret = secrets.GoogleClientSecret;
        });
}

Это действительно ударить или пропустить. Я не могу воспроизвести его локально, но несколько пользователей смогли воспроизвести его на своих компьютерах, поэтому трудно сказать, что происходит не так.

0 ответов

Другие вопросы по тегам