Я попал в цикл перенаправления при попытке доступа к странице за атрибутом авторизации в Net Core 3, независимо от того, вошел ли я в систему или есть ли у пользователя разрешения. Я следил за учебниками MSDN и немного искал, но еще не нашел решения своей проблемы. Я подозреваю, что он не распознает мой идентификационный файл cookie или каким-то образом не перенаправляет на нужную страницу, но мне нужно руководство о том, что искать.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<GuitarCatalogMVCContext>(options =>
options.UseSqlite( Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<GuitarCatalogAuthUser, IdentityRole>().AddEntityFrameworkStores<GuitarCatalogMVCContext>().AddDefaultTokenProviders();
services.AddControllersWithViews();
services.AddRazorPages();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
IConfigurationSection googleAuthNSection = Configuration.GetSection("Authentication:Google");
options.ClientId = googleAuthNSection["ClientId"];
options.ClientSecret = googleAuthNSection["ClientSecret"];
options.CallbackPath = new PathString("/signin-google");
});
services.AddAuthorization();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
Используя логин Google на /Identity/Account/Login
, я получаю соответствующее сообщение, я могу успешно войти в систему, а URL-адрес:
https://accounts.google.com/signin/oauth/oauthchooseaccount?
response_type=code &client_id= ______
&redirect_uri=https%3A%2F%2Flocalhost%3A44346%2Fsignin-google
&scope=openid%20profile%20email &state= _______ &flowName=GeneralOAuthFlow
Когда я открываю метод контроллера за атрибутом [Authorize]
через <a href="@Url.Action("Create", "Listings")" target="_blank"><h1>TEST CREATE LISTING</h1></a>
, он подписывает меня, а затем немедленно возвращает меня на ту же страницу.
Я открыл вкладку «Сеть» в инструментах разработчика, и здесь я вижу, где был обработан мой вход в систему, это привело меня на страницу «Создать», а затем я вернулся на страницу входа. Я не вижу ничего, что указывало бы на то, что мой вход не удалось (или почему он снова предлагает мне войти, когда я вошел в систему).