Arhn - архитектура программирования

проблема с авторизацией asp.net авторизует всех

Итак, у меня есть 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)

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


Ответы:


1

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

12.03.2011
  • Где он должен быть тогда? У меня нет визуальной студии, где я сейчас нахожусь. Но завтра проверю. Можете ли вы сказать мне, где обычно ставятся теги местоположения? 12.03.2011
  • Вероятно, вам следует просто удалить тег местоположения. Вы говорите, что все эти настройки применяются только к каталогу стилей. Я не могу представить, что ты этого хочешь. 12.03.2011
  • Хм, но теперь я потерял CSS для всех своих файлов, хорошая новость в том, что все остальное теперь работает, после 1 недели попыток понять это, это был просто глупый тег местоположения..: p Боже, как хорошо =) 13.03.2011
  • Я понял свою проблему с CSS. Forms блокирует все папки до тех пор, пока вы не пройдете аутентификацию. Но, как указано выше, вы можете поместить эти папки в теги местоположения, что позволит использовать папки. Проверьте эту ссылку stackoverflow.com/questions/485735/ 13.03.2011

  • 2

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

    Два пункта на заметку:

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

    <deny users="*" />
    

    to:

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

    Это запрещает доступ только неавторизованным пользователям.

    Посмотрите, если это имеет значение, и второй элемент, который нужно проверить, — это информация о пользователе. В непосредственном окне введите:

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

    И посмотрите, что он вам говорит... также, какой тип объекта является Identity? Это GenericIdentity, FormsIdentity или WindowsIdentity?

    Спасибо.

    10.03.2011
  • Я изменил ‹deny users=/› на ‹deny users=? /› ‹разрешить пользователям= /› но у меня все та же проблема. Отрицать ? означает, что посторонние не допускаются. Но что позволяет * делать? После этого я попробовал этот HttpContext.Current.User.Identity.AuthenticationType, и возвращенное значение было NTLM. Поскольку я совершенно новичок в asp.net, я понятия не имею, что это такое, может быть, вы можете мне сказать? :) Затем я попробовал этот HttpContext.Current.User.Identity.GetType, чтобы получить тип Identity, который является System.Security.Principal.WindowsIdentity. Это то, что вы хотели? :) 10.03.2011
  • о, и имя, которое я получаю от личности, - это Unreal \ Admin. Это имя моего компьютера и имя пользователя моей учетной записи на этом компьютере. У меня действительно был более ранний вопрос на этом сайте о том, как это изменить: asp-net" title="сохранение имени для входа в качестве текущего идентификатора пользователя в сети asp">stackoverflow.com/questions/5152735/ . 10.03.2011
  • Да, он использует аутентификацию Windows, а не аутентификацию форм. ‹allow users=* /› после отказа означает разрешить всем аутентифицированным пользователям (обрабатывается в следующем порядке: запретить неаутентифицированным, разрешить всем, и эти правила обрабатываются по порядку). 10.03.2011
  • Я не уверен, почему он использует окна вместо форм, но это и есть безопасность NTLM... так что еще раз проверьте свой файл конфигурации. 10.03.2011
  • ‹режим аутентификации=Формы› ‹имя форм=.ASPXFORMSAUTH loginUrl=Login.aspx Protection=All timeout=30 path=//› ‹/authentication› это точная копия моего файла веб-конфигурации. Есть идеи? Это ведь не где-то еще я должен писать формы, не так ли? 11.03.2011
  • Я только что отредактировал свой первый пост, чтобы он содержал мой полный файл конфигурации. Вы видите что-то, чего там не должно быть? 12.03.2011
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..