проблема авторизации asp.net разрешает всем - PullRequest
0 голосов
/ 10 марта 2011

Итак, я получил 2 файла .aspx.Один называется логин, а другой - по умолчанию.Идея заключается в том, что при запуске приложения вы попадете на экран входа в систему.Я делаю это с помощью следующего кода в файле default.aspx.vb:

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        If (HttpContext.Current.User.Identity.IsAuthenticated = False) Then

            Response.Redirect("Login.aspx")


        End If

    End Sub

Проблема в том, что вы по какой-то причине всегда проходите аутентификацию.Это всегда возвращает истину.Мой файл веб-конфигурации выглядит так:

<configuration>
  <appSettings>
    <add key="strConn" value="EDITED"/>

  </appSettings>
  <location path="~/Styles">
    <system.web>




  <customErrors mode ="Off">

  </customErrors>

  <authentication mode="Forms">
    <forms name=".ASPXAUTH"
           loginUrl="Login.aspx"
           protection="All"
           timeout="30"
           path="/">
    </forms>
  </authentication>

  <authorization>

    <deny users="?" />
    <allow users="*" />

  </authorization>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
    <assemblies>
      <add assembly="Microsoft.Data.Odbc, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      <add assembly="system.web.security"/>

    </assemblies>
  </compilation>



 </system.web>
  </location>
</configuration>

Я пробовал с aswell, ничего не изменилось.Пользователи проходят аутентификацию через базу данных.В настоящее время я запускаю программу в Visual Studio, а не на моем сайте.Когда пользователи проверяются через базу данных, я использую этот код:

FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, chkPersistCookie.Checked)

Итак, есть идеи, почему люди всегда авторизованы?

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

Я думаю, что проблема в теге местоположения. Эти правила применяются только к каталогу стилей, а не ко всему сайту.

2 голосов
/ 10 марта 2011

Вам не нужно писать код для выполнения перенаправления, когда вы не вошли в систему. Фреймворк достаточно умен, чтобы взглянуть на аутентификацию и войти в систему.

Два замечания:

Измените это:

<deny users="*" />

на:

<deny users="?" />
<allow users="*" />

Отказывает только не прошедших проверку пользователей.

Se, если это имеет значение, и второй элемент дляпроверить это информация о пользователе.В появившемся окне введите:

HttpContext.Current.User.Identity.Name HttpContext.Current.User.Identity.AuthenticationMode // или с аналогичным именем, забудьте точное имя

и посмотрите, что он говоритВы ... и какой тип объекта является идентичностью?Это GenericIdentity, FormsIdentity или WindowsIdentity?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...