У меня есть приложение, использующее аутентификацию на основе форм. Я никогда не использовал это раньше. Ниже приведен пример пример кода:Forms Authetnication работает с Forms Authentication disabled in IIS
private bool ValidateUser(string userName, string password, string strConnectionString)
{
SqlConnection conn;
SqlCommand cmd;
string lookupPassword = null;
// Check for invalid userName.
// userName must not be null and must be between 1 and 15 characters.
if ((null == userName) || (0 == userName.Length) || (userName.Length > 15))
{
System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.");
return false;
}
// Check for invalid passWord.
// passWord must not be null and must be between 1 and 25 characters.
if ((null == passWord) || (0 == passWord.Length) || (passWord.Length > 25))
{
System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.");
return false;
}
try
{
// Consult with your SQL Server administrator for an appropriate connection
// string to use to connect to your local SQL Server.
//conn = new SqlConnection(connectionstringremoved);
conn = new SqlConnection(strConnectionString)
conn.Open();
Error.Text = "Got here";
// Create SqlCommand to select pwd field from users table given supplied userName.
cmd = new SqlCommand("Select pwd from users where [email protected]", conn);
cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25);
cmd.Parameters["@userName"].Value = userName;
// Execute command and fetch pwd field into lookupPassword string.
lookupPassword = (string)cmd.ExecuteScalar();
// Cleanup command and connection objects.
cmd.Dispose();
conn.Dispose();
}
catch (Exception ex)
{
// Add error handling here for debugging.
// This error message should not be sent back to the caller.
System.Diagnostics.Trace.WriteLine("[ValidateUser] Exception " + ex.ToString());
Error.Text = ex.ToString();
}
// If no password found, return false.
if (null == lookupPassword)
{
// You could write failed login attempts here to event log for additional security.
return false;
}
// Compare lookupPassword and input passWord, using a case-sensitive comparison.
return (0 == string.Compare(lookupPassword, passWord, false));
}
Я опубликовал это приложение в IIS 6.1 и я заметил, что он работает независимо от того, включена ли Аутентификация с помощью форм или нет (он отключен в приведенном ниже случае).
У меня есть один и тот же вопрос о базовой аутентификации.
Я считаю, что это связано с анонимной аутентификацией, которая включена, то есть включение анонимной аутентификации также позволяет аутентификации по умолчанию по умолчанию - или что-то в этом роде. Однако я не могу найти документацию для поддержки этого утверждения.
Когда я включаю только проверку подлинности форм, есть ошибка:. Модуль фильтрации запросов настроен на отклонить запрос где запрос Строка слишком длинная. Это ответ на страницу 404.15. – w0051977
Итак, это говорит нам о том, что аутентификация форм действительно срабатывает, и она больше не работает независимо от того, включена ли аутентификация форм или нет. Итак, теперь вам нужно перейти на следующий этап и выяснить, как обойти ваш ответ на 404.15 странице ... –