Ищу решение проблемы, указанной в заголовке вопроса. Чтобы быть более точным - я запускаю тестовое приложение (asp.net core / mvc) и туннелирую его, чтобы он был доступен во всем мире, используя https://ngrok.com. Для этого я использую следующую команду:
ngrok.exe http -host-header = перезаписать localhost: 62274
«ngrok.exe http» используется для инициализации ngrok, «-host-header = rewrite localhost: 62274» изменяет заголовок, чтобы разрешить выполнение приложения (поскольку IIS проверяет заголовок и блокирует любой другой).
Проблема, с которой я столкнулся, заключается в том, что после неудачной авторизации (гости пытаются получить доступ к странице с ограниченным доступом) [Authorize] указывает на внутренние ссылки (например, "http://localhost:62274/Account/Login"). Это не предназначено.
Все ссылки, предоставляемые видами приложения, работают правильно (они используют префикс адреса, предоставленный ngrok). Мне пришлось исправить параметры returnUrl для входа / регистрации, но теперь они работают безупречно.
Я искал ответ на эту проблему уже 2 дня. Как было сказано ранее, это тестовое приложение, которое я делаю для изучения программирования в ядре .NET. Ограничение заключается в том, что я не хочу писать свою собственную авторизацию - это связано с моей неопытностью, для этого потребуются постоянные обновления безопасности, и нет смысла изобретать велосипед, верно?
Проблема возникает:
[Authorize("Admin")]
public async Task<IActionResult> DeleteDItem(int? id)
Вместо перенаправления на: http: // ‹8_random_characters> .ngrok.io / Account / Login он указывает на: http://localhost:62274/Account/Login
Подробнее (это первый вопрос, который я пишу здесь КОГДА-ЛИБО, поэтому я хочу, чтобы он был в некоторой степени правильным):
- это веб-приложение ASP.NET Core, использующее по умолчанию MVS2015 «Индивидуальная аутентификация пользователя»,
- связанный проект. информация json:
"dependencies": {
"BundlerMinifier.Core": "2.1.258",
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNet.Authentication.Google": "1.0.0-rc1-final",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Authentication.Facebook": "1.0.0",
"Microsoft.AspNetCore.Authentication.Google": "1.0.0",
"Microsoft.AspNetCore.Authorization": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
...
"Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.0"
- связанные части Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy =>
policy.RequireAuthenticatedUser());
});
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
app.UseIdentity();
}