Почему файл cookie ASP.NET FormsAuthentication не аутентифицирует пользователя?

У меня есть сайт, который использует SqlMembershipProvider по умолчанию и FormsAuthentication. Я могу использовать встроенные средства контроля входа и / или программно вызывать все методы для проверки подлинности пользователя и получения того же результата - пользователь проходит проверку подлинности и создается файл cookie, но файл cookie не является действительным, поскольку я могу не попасть на любую страницу, требующую аутентификации.

Нет реального кода, который можно показать для элемента управления по умолчанию, так как он должен просто «работать», но вот пользовательский код, который я пробовал:

protected void ctrlLogin_Authenticate(object sender, AuthenticateEventArgs e)
{
   if (Membership.ValidateUser(ctrlLogin.UserName, ctrlLogin.Password))
   {
      FormsAuthentication.RedirectFromLoginPage(ctrlLogin.UserName, ctrlLogin.RememberMeSet);
      /*
       * I also tried this:
      FormsAuthentication.SetAuthCookie(ctrlLogin.UserName, ctrlLogin.RememberMeSet);
      if (!String.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
         Response.Redirect(Request.QueryString["ReturnUrl"]);
      Response.Redirect("/index.aspx");
       */
   }
   else
   {
      ctrlLogin.FailureText = "Invalid Username/Password Combination";
   }
}

С этим кодомMembership.ValidateUser () успешнои обаFormsAuthentication.RedirectFromLoginPage () и FormsAuthentication.RedirectFromLoginPage () успешно установили cookie - этот cookie просто не работает для проверки моей аутентификации. Я подтвердил это, удалив все мои куки и наблюдая, как они снова создаются с помощью FireCookie. Имя файла cookie совпадает с тем, что есть в моем файле web.config, домен - «/», а срок действия - как и ожидалось (см. Ниже).

Вот соответствующие разделы моего web.config:

<authentication mode="Forms">
  <forms loginUrl="~/login/index.aspx" name=".SoeAuth" protection="All"
    slidingExpiration="true" timeout="525599" domain=""></forms>
</authentication>
<membership defaultProvider="SqlMembershipProvider">
  <providers>
    <add connectionStringName="[MY_CS]" applicationName="[MY_APPNAME]"
      minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
      enablePasswordReset="true" passwordFormat="Hashed" requiresUniqueEmail="true"
      name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
      requiresQuestionAndAnswer="false"/>
  </providers>
</membership>

Следует отметить, что я также добавил запись machineKey в свой файл web.config, основываясь на предложенииочень похожий вопрос здесь (что не решило мою проблему). Кроме того, для справки, время ожидания = 525599, указанное выше, составляет 1 минуту меньше, чем год для моих постоянных файлов cookie.

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

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