Аутентификация через web.config, не проходящий проверку подлинности в ASP.net 3.5

(Этот ответ был обновлен для соответствия SVN 1.8 и 1.9's поведение)

, у Вас есть 2 вопроса:

отмечающие файлы, как проигнорировано:

"проигнорированным файлом" я подразумеваю, что файл не появится в списках, как раз когда "неимеющий версию": Ваш клиент SVN притворится, что файл не существует вообще в файловой системе.

Проигнорированные файлы определяются "шаблоном файла". Синтаксис и формат шаблонов файла объяснены в онлайн-документации SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Шаблоны файла в Подрывной деятельности".

Подрывная деятельность, с версии 1.8 (июнь 2013) и позже, поддерживает 3 различных способа определить шаблоны файла. Вот сводка с примерами:

1 - опция Runtime Configuration Area - global-ignores:

  • Это клиентское [только 1 179] установка, таким образом, Ваш global-ignores список не будет совместно использован другими пользователями, и это относится ко всему repos Вы контроль на Ваш компьютер.
  • Эта установка определяется в Вашем файле области Конфигурации Во время выполнения:
    • (основанный на файле) Windows - C:\Users\{you}\AppData\Roaming\Subversion\config
    • (основанный на реестре) Windows - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores и в HKLM и в HKCU.
    • Linux/Unix - ~/.subversion/config

2 - svn:ignore свойство, которое установлено на каталогах (не файлы):

  • Это хранится в repo, таким образом, у других пользователей будет то же, игнорируют файлы. Подобный, к как .gitignore работы.
  • svn:ignore применяется к каталогам и нерекурсивен или наследован. Любой файл или непосредственный подкаталог родительского каталога, который соответствует Шаблону Файла, будет исключен.
  • , В то время как SVN 1.8 добавляет понятие "унаследованных свойств", svn:ignore, само свойство проигнорировано в ненепосредственных порожденных каталогах:

    cd ~/myRepoRoot                             # Open an existing repo.
    echo "foo" > "ignoreThis.txt"                # Create a file called "ignoreThis.txt".
    
    svn status                                  # Check to see if the file is ignored or not.
    > ?    ./ignoreThis.txt
    > 1 unversioned file                        # ...it is NOT currently ignored.
    
    svn propset svn:ignore "ignoreThis.txt" .   # Apply the svn:ignore property to the "myRepoRoot" directory.
    svn status
    > 0 unversioned files                       # ...but now the file is ignored!
    
    cd subdirectory                             # now open a subdirectory.
    echo "foo" > "ignoreThis.txt"                # create another file named "ignoreThis.txt".
    
    svn status
    > ?    ./subdirectory/ignoreThis.txt        # ...and is is NOT ignored!
    > 1 unversioned file
    

    (Таким образом, файл ./subdirectory/ignoreThis не проигнорирован, даже при том, что" ignoreThis.txt" применяется на . корень repo).

  • Поэтому для применения черного списка рекурсивно необходимо использовать svn propset svn:ignore . --recursive.

    • Это создаст копию свойства на каждом подкаталоге.
    • , Если эти значение отличается в дочернем каталоге тогда, значение ребенка полностью переопределяет родителей, таким образом, нет никакого "аддитивного" эффекта.
    • Поэтому, если Вы изменяетесь на корне ., тогда необходимо изменить его с [1 122] для перезаписи его на дочерних и порожденных каталогах.
  • я отмечаю, что синтаксис командной строки парадоксален.

    • я начался, предположив, что Вы проигнорируете файл в SVN путем ввода чего-то как [1 123] однако, это не то, как SVN's игнорирует работы функции.

3-svn:global-ignores свойство. Требует (июнь 2013) SVN 1.8:

  • Это подобно [1 125], кроме него использует SVN 1.8's функция "унаследованных свойств".
  • Выдерживают сравнение с [1 126], шаблон файла автоматически применяется в каждом порожденном каталоге (не только непосредственные дети).
    • Это означает, что это является ненужным для установки svn:global-ignores с эти --recursive, флаг, столь наследованный, игнорирует шаблоны файла, автоматически применяются, как они наследованы.
  • Выполнение того же набора команд как в предыдущем примере, но использовании svn:global-ignores вместо этого:

    cd ~/myRepoRoot                                    # Open an existing repo
    echo "foo" > "ignoreThis.txt"                       # Create a file called "ignoreThis.txt"
    svn status                                         # Check to see if the file is ignored or not
    > ?    ./ignoreThis.txt
    > 1 unversioned file                               # ...it is NOT currently ignored
    
    svn propset svn:global-ignores "ignoreThis.txt" .
    svn status
    > 0 unversioned files                              # ...but now the file is ignored!
    
    cd subdirectory                                    # now open a subdirectory
    echo "foo" > "ignoreThis.txt"                       # create another file named "ignoreThis.txt"
    svn status
    > 0 unversioned files                              # the file is ignored here too!
    

Для пользователей TortoiseSVN:

Это целое расположение сбивало с толку меня, потому что терминология TortoiseSVN (как используется в их системе меню Windows Explorer) первоначально вводила в заблуждение мне - я был не уверен, что значение меню Ignore, "Добавляют рекурсивно", опции "Add *" и "Add". Я надеюсь, что это сообщение объясняет, как функция Ignore соединяется к функции SVN Properties. Однако я предлагаю использовать командную строку для установки проигнорированных файлов, таким образом, Вы получаете ощущение того, как она работает вместо того, чтобы использовать GUI, и только использовать GUI для управления свойствами после того, как Вы довольны командной строкой.

файлы Списка, которые проигнорированы:

команда svn status скроет проигнорированные файлы (то есть, файлы, которые соответствуют шаблону RGA global-ignores, или соответствуют шаблону каталога svn:ignore непосредственного родителя или соответствуют шаблону любого ancesor каталога svn:global-ignores.

Использование --no-ignore опция видеть те перечисленные файлы. Проигнорированные файлы имеют состояние [1 135], затем передают вывод по каналу к [1 136], чтобы только показать строки, запускающиеся с "I".

команда:

svn status --no-ignore | grep "^I"

, Например:

svn status
> ? foo                             # An unversioned file
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore
> ? foo                             # An unversioned file
> I ignoreThis.txt                  # A file matching an svn:ignore pattern
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore | grep "^I"
> I ignoreThis.txt                  # A file matching an svn:ignore pattern

ta-da!

12
задан Kevin Wilson 23 December 2011 в 20:49
поделиться

5 ответов

Я не уверен, изменилось ли это в .NET 3.5, но <учетные данные> Элемент имеет атрибут passwordFormat , который определяет формат паролей в web.config . Из документации MSDN для .NET 3.5 формат по умолчанию - SHA1.

Если вы используете незашифрованные имена пользователей и пароли в своем web.config , вы должны использовать:

...
<credentials passwordFormat="Clear">
...

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

13
ответ дан 2 December 2019 в 20:18
поделиться

Я думаю, причина в том, что вы не указали passwordFormat. http://msdn.microsoft.com/en-us/library/e01fc50a.aspx

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

2
ответ дан 2 December 2019 в 20:18
поделиться

Вы должны указать , когда сохраняете пароль в виде открытого текста.

Альтернативой являются зашифрованные пароли с использованием MD5 или SHA1.

См. http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile.aspx для функции кодирования пароля.

Вы также можете подумайте об использовании некоторых из доступных пользовательских элементов управления, которые многое делают за вас автоматически. Загляните в раздел «Вход» на панели инструментов управления в Visual Studio.

На следующей странице вы найдете все необходимое для этого простого случая, а внешний вид элемента управления «Вход в систему» ​​полностью настраиваемый:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        e.Authenticated = FormsAuthentication.Authenticate(Login1.UserName, Login1.Password);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Login</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Login ID="Login1" runat="server" onauthenticate="Login1_Authenticate">
        </asp:Login>
    </div>
    </form>
</body>
</html>
2
ответ дан 2 December 2019 в 20:18
поделиться

Другая возможная ловушка состоит в том, что имя пользователя «Admin» кажется особенным и не принимается во внимание, если вы тестируете учетные данные, установленные в web.config

<credentials>
 <user name="Admin" password="somepassword" />  //Authentication always returns false for me
</credentials>

<credentials>
 <user name="MyName" password="somepassword" />  //Authentication works normally 
</credentials>

Проблема, похоже, не применима в вашем случае, но я потратил час на то, чтобы понять это, поэтому решил записать это здесь.

2
ответ дан 2 December 2019 в 20:18
поделиться

Я нахожу это решение ........ сначала вам нужно получить хэш-значение, используя FormsAuthentication.HashPasswordForStoringInConfigFile ("abc", "SHA1") в текстовом поле, запустив вашу программу и затем укажите это значение в

-3
ответ дан 2 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: