簡體   English   中英

帶有瀏覽器和.net MVC的Flex應用程序RedirectToAction == BadRequest

[英]Flex Application with browser and .net MVC RedirectToAction == BadRequest

我有一個帶有HTML瀏覽器的flex應用程序。

每當我嘗試登錄.net 4 MVC 3應用程序時,都會重定向到這樣的URL:

http://dev.example.com/(F(pvQgwsX3QvLrI1tN0JENknfz27yN7H00FCaLw_N06qL_SvBGmbS9Mc8V9BIlergVUhGiLeg-JU5HnEE-fzXtWqtVq-S5Pk393AXbifUTmcH29sDF9e028kpbYbX8L-VOY75QXYzXHTDfb06ozuOJzPvPB-y8atHn2B3BoDyiZMBd3DCjdO4meTwp9kvNY6ZarXbFByTU932Hu95lRcTq6yJzQ8y5Ree28nqgjqVHKEV77noegweTKkZ0_5IUZYnE0))/someDirectory

並且僅在Flex瀏覽器(Adobe Air 2.6)中會發生這種情況。 使用常規的互聯網瀏覽器登錄就可以了。

登錄代碼如下:

    [HttpPost]
    [ActionName("sign-in")]
    public ActionResult Signin(SignInModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (MembershipService.ValidateUser(model.Email, model.Password))
            {
                FormsService.SignIn(model.Email, model.RememberMe);
                if (Url.IsLocalUrl(returnUrl) && false)
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "admin");
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

        // If we got this far, something failed, redisplay form
        return View("signin", model);
    }

知道該url是什么以及如何使其工作嗎?

一時興起,我決定將flex瀏覽器的用戶代理更改為Chrome和viola使用的代理。 - 有用。

顯然.net或MVC 3不喜歡flex的userAgent字符串,因此決定對URL進行處理。 它可能正在嘗試設置無cookie會話或其他內容(我的應用程序未針對此設置)。

所以這是我新的有效的用戶代理字符串:

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/531.9 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24

當瀏覽器不支持cookie或已將其關閉時,ASP.NET將使用此URL。 它沒有特定於ASP.NET MVC。 由於沒有cookie,因此會在url中發送身份驗證令牌,以跟蹤登錄的用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM