Я использую последнюю версию ASP.NET MVC 6.Как попасть в ReturnUrl AccessDeniedPath в ASP.NET MVC 6 (ASP.NET ядра)
Следующие настройки устанавливаются Startup.cs
файл:
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
options.Cookies.ApplicationCookie.LoginPath = new PathString("/account/login");
options.Cookies.ApplicationCookie.AccessDeniedPath = new PathString("/error/accessdenied");
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(1);
options.Cookies.ApplicationCookie.SlidingExpiration = false;
options.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
options.Cookies.ApplicationCookie.AutomaticChallenge = true;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
}
В Account
контроллер имеет действие Login
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
В методе выше у меня нет проблем с получением returnUrl
.
Кроме того, в контроллер Error
имеющий действие AccessDenied
[AllowAnonymous]
[HttpGet]
public IActionResult AccessDenied(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
Но когда пользователь не имеет права доступа к страницам сайта, система перенаправляет пользователя на страницу ../error/accessdenied
.
На данный момент, после того как я перенаправлен returnUrl
значение null
.
Могу ли я получить адрес страницы, с которой был перенаправлен пользователь (а также работает для LoginPath
)?