Я обновил свое приложение с 2.2 до ASP. NET core 3.1. Однако маршрутизация от моего входа в систему AuthenticationController, после успешного входа в систему, к странице указателя домашней области RazorPage больше не работает. Вот соответствующие части моего кода:
public void Configure(IApplicationBuilder app
// Add JWToken to all incoming HTTP Request Header
app.Use(async (context, next) =>
{
var JWToken = context.Session.GetString("JWToken");
if (!string.IsNullOrEmpty(JWToken))
{
context.Request.Headers.Add("Authorization", "Bearer " + JWToken);
}
await next();
});
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
// AuthenticationController
public class AuthenticationController : Controller {
...
[HttpPost]
public async Task Login([Bind("Id, UserName, Password, EmailAddress")]UserLoginDetails login) {
...
// Successful user authentication - now time to route to Home Index Razor Page
HttpContext.Session.SetString("JWToken", token);
return RedirectToPage("/Index", new { area = "HomePages" });
...
}
}
namespace PilotApp.Areas.HomePages.Pages
{
[Authorize]
public class IndexModel : PageModel
{
...
}
}
Функция RedirectToPage приводит к ошибке HTTP 401 «Эта страница не работает». Обратите внимание, что эта маршрутизация работает, если я удалю атрибут [Authorize]. Итак, почему авторизация на основе JWT не работает в ASP. NET 3.1, которая работала в 2.2?
Благодарен за любую помощь!