Обычно (на моем локальном хосте, например), [Authorize]
правильно перенаправляет на LoginPath
, указанное в CookieAuthenticationOptions
.
Однако при развертывании на моем промежуточном сайте (staging.mysite.com
),перенаправление санкционирования, кажется, неправильно помещает часть URL.В моем случае, он будет:
http://staging/Account.mysite.com/Login?ReturnUrl=%2FHome%2FAuthorize
, когда он должен:
http://staging.mysite.com/Account/Login?ReturnUrl=%2FHome%2FAuthorize
Приложение оченьbasic:
//Startup.cs
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
options.LogoutPath = "/Account/Logout";
options.AccessDeniedPath = "/Home/Unauthorized";
options.ReturnUrlParameter = "ReturnUrl";
});
services.AddMvc()
//....
app.UseMvc();
Мои контроллеры:
//HomeController.cs
[Route("[controller]/[action]")]
public class HomeController : Controller
{
[Authorize]
public IActionResult Authorize()
{
return Ok("You are authorized");
}
}
//AccountController.cs
[Route("[controller]/[action]")]
public class AccountController : Controller
{
public IActionResult Login()
{
return View(new LoginViewModel());
}
}
Кто-нибудь видел, где я иду не так?
ОБНОВЛЕНИЕ:
Странно, если я сделаю изменения ниже, это работает.Так что, похоже, проблема в том, что действие указано в маршруте?
options.LoginPath = "/Login"; //I removed /Account
[HttpGet("/Login")] //I added the "/Login" template
public IActionResult Login()