Как работает перенаправление на returnUrl в Asp.Net MVC5

Мы запустили новый сайт MVC 5, используя новую идентификацию Asp.Net с Owin. В моем "учетная запись" контроллер, имеющий атрибут [Authorize], у меня довольно стандартные действия;

   // GET: /User/Login
        [AllowAnonymous]
        public ActionResult Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            return View();
        } 

// POST: /User/Login
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task Login(LoginViewModel model, string returnUrl)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var userApi = new UserService();
                    var apiUser = await userApi.LogIn(UserManager, model.CardNumber, model.Pin, model.RememberMe);

                    if (apiUser != null)
                    {
                        await SignInAsync(apiUser, model.RememberMe);
                        if (string.IsNullOrEmpty(returnUrl))
                        {                                   
                            return RedirectToAction("UserLoggedIn", "User");    
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "Invalid username or password.");
                    }
                }

            }
            catch (Exception ex)
            {
                Trace.TraceError("Cannot login {0}", ex.ToString());
                Response.AppendToLog(ex.ToString());
                ModelState.AddModelError("", ex.ToString());
            }
            // If we got this far, something failed, redisplay form
            return View(model);
        }

Мой вопрос касается поведения returnUrl, приведенный выше код работает в том смысле, что, если пользователь не вошел в систему и не вызывает действие в контроллере с атрибутом [Authorize], он отправляется вышеупомянутым действиям входа в систему и затем возвращается к контроллеру / действие, которое было запрошено. Что здорово, НО как ?? И это безопасно?

В этой статье о "Предотвращение атак открытого перенаправления "(для более ранних версий Asp.Net MVC) рекомендуется проверить returnUrl, что он 'Это локальный URL перед выполнением перенаправления, это то, что я должен сделать, или это теперь обрабатывается фреймворком?

Ура, Ола

Ответы на вопрос(4)

Ваш ответ на вопрос