Почему моя страница входа в asp.net не работает с редиректом? - PullRequest
1 голос
/ 19 мая 2009

У меня есть эта настройка сайта членства на локальном компьютере с использованием поставщика членства ASP.NET. Когда я иду к:

http://localhost/admin/

Это перенаправляет меня на

http://localhost/Login.aspx?ReturnUrl=%2fadmin%2fDefault.aspx

Что хорошо. Но после того, как я ввел свою регистрационную информацию, страница, кажется, просто обновилась. На самом деле он не входит в систему, а выглядит так, будто обновляет страницу. Если я изменю URL на:

http://localhost/Login.aspx

Работает нормально. Это регистрирует меня без проблем, и перенаправляет меня на мою страницу по умолчанию. Я также проверил живой сайт, и он делает то же самое. Есть идеи? Заранее спасибо!

РЕДАКТИРОВАТЬ: Вот разметка:

<asp:Login ID="Login1" runat="server" CssClass="LoginBox" TitleText="Please Log In">
    <LayoutTemplate>
        <h2>
            Please Log In:</h2>
        <p runat="server" id="FailureText" visible="false">
            Either your email address or password was incorrect. Please try again.</p>
        <strong>Email</strong><br />
        <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
            Text="*"></asp:RequiredFieldValidator>
        </p>
        <p>
            <strong>Password</strong><br />
            <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>
            <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
                Text="*"></asp:RequiredFieldValidator>
        </p>
        <p>
            <asp:Button ID="Login" CommandName="Login" runat="server" Text="Log In" /></p>
        <p>
            Please <a runat="server" id="Link_ContactUs">contact </a>an administrator if you
            are having trouble logging in or have forgotten your password.</p>
    </LayoutTemplate>
</asp:Login>

Настройка web.config:

<authentication mode="Forms">
  <forms loginUrl="/Login.aspx"
         protection="All"
         timeout="60"
         name="AppNameCookie"
         path="/Admin"
         requireSSL="false"
         slidingExpiration="true"
         defaultUrl="/Admin/Default.aspx"
         cookieless="UseCookies"
         enableCrossAppRedirects="false" />
</authentication>

1 Ответ

4 голосов
/ 19 мая 2009

Можете ли вы показать нам код? Если вы используете FormsAuthentication.RedirectFromLoginPage метод, вы должны получить то, что вы хотите. Вы используете FormsAuthentication.SetAuthCookie вместо?

Обновление

Изменить path="/Admin" в web.config на path=/

Причина, по которой он не работает, заключается в том, что ваш куки-файл аутентификации установлен только в пути /Admin, а ваш браузер обрабатывает URL-адреса как чувствительные к регистру, поэтому он не отправляет куки-файл аутентификации обратно на страницу /admin/Default.aspx (строчные буквы *) 1014 *).

...