Codes DeCodes Ответов: 1

При использовании formsauthentication нажатие кнопки срабатывает в другом методе действия


Моя структура проекта MVC5 выглядит следующим образом:::

Project
  - App_Data
  - App_Start
  - Controllers
      - AccountController.cs
      - HomeController.cs
  - Views
      - Account
          - Index.cshtml
      - Home
          - Index.cshtml
      - web.config
  - Global.asax
  - Web.config


В вид -и GT; учетная запись -&ГТ; индекс.cshtml по странице входа, чей взгляд сейчас:
<body>
    <div>
        @using (Html.BeginForm("Login", "Account", FormMethod.Post))
        {
          <p>
              from Account
          </p>
          <input type="submit" value="Post" />
        }
        
    </div>
</body>


Код AccountController-это:

public class AccountController : Controller
  {
      // GET: Account
      public ActionResult Index()
      {
          return View();
      }

      [HttpPost]
      [AllowAnonymous]
      public ActionResult Login()
      {
          if (true)  //assuming validation is true
          {
              FormsAuthentication.RedirectFromLoginPage("test", false);
          }
          return View();
      }
  }




Как ни странно, когда я нажимаю на кнопку Post(), которая находится под формой POST, она попадает в точку останова в контроллере в методе Index() вместо Login().

Файл Web.config для formsauthentication-это:::

<system.web>

   <authentication mode="Forms">
     <forms loginUrl="~/Account/Index" defaultUrl="~/Home/Index" >
       <credentials passwordFormat="Clear"></credentials>
     </forms>
   </authentication>
   <authorization>
     <deny users="?"/>
   </authorization>

   <compilation debug="true" targetFramework="4.6.1"/>
   <httpRuntime targetFramework="4.6.1"/>
 </system.web>


Сейчас я не понимаю поведения MVC. Почему это происходит???

Что я уже пробовал:

Если я не украшу [AllowAnonymous], никакого поста не будет. Я удалил аутентификацию форм, и она работала нормально.

F-ES Sitecore

Вы уверены, что он не выполняет действие Post, а затем действие Index? Код В Post перенаправляется на действие Index, поэтому он всегда будет переходить в Index после Post.

1 Ответов

Рейтинг:
0

Codes DeCodes

Да, он не собирается публиковать, но собирается индексировать действие. Отладчик был установлен во всех методах действия, но код не перешел в Login(). Для двойной перекрестной проверки я сделал ниже код и проверил то, что сказал ранее.

public class AccountController : Controller
   {
       // GET: Account
       public ActionResult Index()
       {
           return View();
       }

       [HttpPost]
       [AllowAnonymous]
       public ActionResult Login()
       {
           if (true)  //assuming validation is true
           {
               FormsAuthentication.RedirectFromLoginPage("test", false);
           }
           return null;
       }