Аутентификация ядра.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;
});
}
Это действительно ударить или пропустить. Я не могу воспроизвести его локально, но несколько пользователей смогли воспроизвести его на своих компьютерах, поэтому трудно сказать, что происходит не так.