В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Как реализовать проверку подлинности на основе форм в приложении ASP.NET с помощью C#.NET

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:301240
Аннотация
В этой статье показано, как реализовать на основе форм Проверка подлинности с помощью базы данных для хранения пользователей.

back to the top

Требования

В следующем списке представлены рекомендуемого оборудования, программного обеспечения, сетевой инфраструктуры и пакетов обновления, необходимо:
  • Microsoft Visual Studio.NET
  • Интернет информации Microsoft Services (IIS) версии 5.0 или более поздней версии
  • Microsoft SQL Server
back to the top

Создание веб-приложения ASP.NET, используя C#.NET

  1. Откройте среду Visual Studio.NET.
  2. Создайте новую страницу ASP.NET и укажите имя и расположение.
back to the top

Настройка параметров безопасности в файле Web.config

В этом разделе показано, как добавлять и изменять <authentication></authentication> и <authorization></authorization> разделы конфигурации для настройки ASP.NET для Используйте проверку подлинности на основе форм.
  1. В обозревателе решений откройте файл Web.config.
  2. Изменить режим проверки подлинности Формы.
  3. Вставьте тег <forms> и укажите соответствующую атрибуты. (Для получения дополнительных сведений об этих атрибутах обратитесь к MSDN документации или документации QuickStart, указанной в </forms>ССЫЛКИ раздел.) Копировать Следующий код, а затем нажмите кнопку Вставить как HTML В менюРедактирование Чтобы вставить код в меню <authentication></authentication> раздел файла:
    <authentication mode="Forms">   <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx"    protection="All" path="/" timeout="30" /></authentication> 					
  4. Запретить доступ анонимных пользователей в <authorization></authorization> раздел следующим образом:
    <authorization>   <deny users ="?" />   <allow users = "*" /></authorization>					
back to the top

Создание базы данных, хранящей данные О пользователях

В этом разделе демонстрируется создание базы данных храните имя пользователя, пароль и роли пользователей. Вам необходимо в тех Если вы хотите хранить роли пользователей в базе данных и реализации на основе ролей безопасность.
  1. На Начало меню, нажмите кнопкуЗапустить, а затем введите «Блокнот» Чтобы открыть «Блокнот».
  2. Щелкните правой кнопкой мыши выделите следующий код сценария SQL код, а затем нажмите кнопку Копировать. В программе «Блокнот» нажмите кнопкуВставить В меню Редактирование Чтобы вставить следующее меню код:
    if exists (select * from sysobjects where id = object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[Users]GOCREATE TABLE [dbo].[Users] (   [uname] [varchar] (15) NOT NULL ,   [Pwd] [varchar] (25) NOT NULL ,   [userRole] [varchar] (25) NOT NULL ,) ON [PRIMARY]GOALTER TABLE [dbo].[Users] WITH NOCHECK ADD    CONSTRAINT [PK_Users] PRIMARY KEY  NONCLUSTERED    (      [uname]   )  ON [PRIMARY] GOINSERT INTO Users values('user1','user1','Manager')INSERT INTO Users values('user2','user2','Admin')INSERT INTO Users values('user3','user3','User')GO					
  3. Сохраните файл с именем Users.sql.
  4. Откройте на компьютере Microsoft SQL Server, Users.sql в Анализатор запросов. В списке баз данных нажмите кнопку pubs, и сценарий. Это создает образец таблицы пользователей и заполняет таблицу в База данных Pubs, используемые в этом примере приложение.
back to the top

Создайте страницу Logon.aspx

  1. Добавьте новую веб-форму с именем проекта Logon.aspx.
  2. Откройте страницу Logon.aspx в редакторе и переключитесь в HTML Просмотр.
  3. Скопируйте следующий код и использовать Вставить как HTML параметр на Редактирование меню Вставка кода между<form>теги:<b00></b00></form>
    <h3>   <font face="Verdana">Logon Page</font></h3><table>   <tr>      <td>Email:</td>      <td><input id="txtUserName" type="text" runat="server"></td>      <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName"           Display="Static" ErrorMessage="*" runat="server"            ID="vUserName" /></td>   </tr>   <tr>      <td>Password:</td>      <td><input id="txtUserPass" type="password" runat="server"></td>      <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass"          Display="Static" ErrorMessage="*" runat="server"           ID="vUserPass" />      </td>   </tr>   <tr>      <td>Persistent Cookie:</td>      <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>      <td></td>   </tr></table><input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p><asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" />						
    Эта веб-форма используется для представления формы входа пользователям, таким образом, чтобы их можно Укажите свое имя пользователя и пароль для входа в приложение.
  4. Переключиться в режим конструктора и сохраните страницу.
back to the top

Создание обработчика событий, проверяющего учетные данные пользователя

В этом разделе представлен код, помещенный в коде страницы (Logon.aspx.cs).
  1. Дважды щелкните значок Вход в систему Чтобы открыть Файл Logon.aspx.cs.
  2. Импортируйте требуемые пространства имен в файле с выделенным кодом:
    using System.Data.SqlClient;using System.Web.Security;					
  3. Создание ValidateUser функция для проверки учетных данных пользователя путем поиска в База данных. (Убедитесь, что изменить строку подключения для указания на База данных).
    private bool ValidateUser( string userName, string passWord ){	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( "server=localhost;Integrated Security=SSPI;database=pubs" );		conn.Open();		// Create SqlCommand to select pwd field from users table given supplied userName.		cmd = new SqlCommand( "Select pwd from users where uname=@userName", 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.Message );	}	// 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 ) );}					
  4. Можно использовать один из двух методов для создания форм файл cookie проверки подлинности и переадресовать пользователя на соответствующую страницу cmdLogin_ServerClick событие. Пример кода предназначен для обоих сценариев. Можно использовать любой из их в соответствии со своими требованиями.
    • Вызов RedirectFromLoginPage метод для автоматического создания файла cookie проверки подлинности форм и перенаправить пользователя на соответствующую страницу cmdLogin_ServerClick событие:
      private void cmdLogin_ServerClick(object sender, System.EventArgs e){if (ValidateUser(txtUserName.Value,txtUserPass.Value) )	FormsAuthentication.RedirectFromLoginPage(txtUserName.Value,		chkPersistCookie.Checked);	else		Response.Redirect("logon.aspx", true);}						
    • Создает билет проверки подлинности, шифрования его, создание файл «cookie», добавьте его в ответ и перенаправить пользователя. Это позволяет более контроль за созданием файлов cookie. Можно также включить пользовательские данные, а также В консоли восстановления команда FormsAuthenticationTicket в этом случае.
      private void cmdLogin_ServerClick(object sender, System.EventArgs e){   if (ValidateUser(txtUserName.Value,txtUserPass.Value) )   {      FormsAuthenticationTicket tkt;      string cookiestr;      HttpCookie ck;      tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");      cookiestr = FormsAuthentication.Encrypt(tkt);      ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);      if (chkPersistCookie.Checked)      ck.Expires=tkt.Expiration;			    ck.Path = FormsAuthentication.FormsCookiePath;       Response.Cookies.Add(ck);      string strRedirect;      strRedirect = Request["ReturnUrl"];      if (strRedirect==null)            strRedirect = "default.aspx";         Response.Redirect(strRedirect, true);   }   else      Response.Redirect("logon.aspx", true);}						
  5. Убедитесь, что добавляется следующий код Метод InitializeComponent метод в код, который создает конструктора веб-форм:
    this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);					
back to the top

Создание страницы Default.aspx

В этом разделе создается пробную страницу, на которой пользователи будут перенаправлены После проверки их подлинности. Если пользователь попытается открыть эту страницу без первого входа в систему для приложений они перенаправляются на страницу входа в систему.
  1. Переименуйте существующую страницу WebForm1.aspx как Default.aspx, а Откройте его в редакторе.
  2. Переключитесь в режим HTML и скопируйте следующий код между очередь<form>теги:<b00></b00></form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">						
    Эта кнопка используется для завершения сеанса проверки подлинности форм сеанс.
  3. Переключиться в режим конструктора и сохраните страницу.
  4. Импортируйте требуемые пространства имен в файле с выделенным кодом:
    using System.Web.Security;					
  5. Дважды щелкните значок SignOut Открыть с выделенным кодом страницы (Default.aspx.cs) и копирования Следующий код в cmdSignOut_ServerClick обработчик событий:
    private void cmdSignOut_ServerClick(object sender, System.EventArgs e){   FormsAuthentication.SignOut();   Response.Redirect("logon.aspx", true);}					
  6. Убедитесь, что добавляется следующий код Метод InitializeComponent метод в код, который создает конструктора веб-форм:
    this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);					
  7. Сохраните и скомпилируйте проект. Теперь вы можете использовать приложения.
back to the top

Дополнительные замечания

  • Требуется безопасное хранение паролей в базе данных. Вы можно использовать FormsAuthentication функция программы класс с именем HashPasswordForStoringInConfigFile для шифрования паролей, прежде чем сохранить их в базе данных или файл конфигурации.
  • Необходимо хранить сведения о подключении SQL в файл конфигурации (Web.config), таким образом, ее можно легко изменить, если необходимости.
  • Может потребоваться дополнительный код для предотвращения атак злоумышленников, пытающихся получить Используйте различные сочетания паролей от входа в систему. Например можно Таким образом, принимает только два или три попытки входа в систему. Если пользователь не может Войдите в число попыток, нужно установить флаг Запретить этому пользователю войти в систему до этого пользователя разрешает свои базы данных учетная запись, перейдите на другую страницу или технической поддержки. В дополнение к этому следует добавить соответствующие ошибки обработки везде необходимости.
  • Поскольку пользователь идентифицируется на основании проверки подлинности файл «cookie», можно использовать протокол SSL (Secure Sockets Layer) на это приложение таким образом что можно заблуждение файл cookie проверки подлинности и другими полезными Информация, которая находится в процессе передачи.
  • Проверка подлинности на основе форм требует, что ваш клиент принимает или разрешить файлы cookie в своих обозревателях.
  • В время ожидания параметр <authentication></authentication> раздел конфигурации определяет временной интервал проверки генерируется файл cookie проверки подлинности. Выберите значение, которое предоставляет повышения производительности и безопасности.
  • Некоторые буферы в Интернете и промежуточных прокси-серверы могут кэшировать ответы веб-сервера, которые содержат заголовки Set-Cookie, которые затем возвращен другим пользователем. Поскольку проверка подлинности на основе форм использует файл cookie для проверки подлинности пользователей, это может привести к пользователям случайно (или преднамеренно) олицетворять другого пользователя путем получения cookie из промежуточных прокси-сервера или кэш-памяти, изначально не предназначен для них.
back to the top
Ссылки
Для получения дополнительных сведений о том, как реализовать простой Проверка подлинности на основе форм, который использует <credentials></credentials> раздел для хранения имен и паролей пользователей, обратитесь к следующему GotDotNet ASP.NET примеров:
Проверка подлинности на основе форм
http://QuickStarts.ASP.NET/QuickStartv20/ASPNET/doc/Security/FormsAuth.aspx
Для получения дополнительных сведений о том, как реализовать на основе форм проверки подлинности с использованием XML-файл для хранения пользователей и паролей, обратитесь к Следующий раздел.NET Framework пакет средств разработки программного обеспечения (SDK) документация:
Проверка подлинности форм с помощью файла пользователя XML
http://msdn2.Microsoft.com/en-us/library/1b1y85bh (vs.71) .aspx
Для получения дополнительных сведений о ASP.NET веб-приложений безопасности, обратитесь к следующей корпорации Майкрософт.Руководство разработчика платформы документация:
ASP.Безопасность NET веб-приложений
http://msdn2.Microsoft.com/en-us/library/330a99hc (vs.71) .aspx
Для получения дополнительных сведений о System.Web.Security пространство имен, обратитесь к следующей корпорации Майкрософт.NET Framework Справочная документация:
Пространство имен System.Web.Security
http://msdn2.Microsoft.com/en-us/library/System.Web.Security (vs.71) .aspx
Для получения дополнительных сведений о ASP.NET конфигурации, обратитесь к следующие корпорации Майкрософт.NET Framework разработчика руководство статей: Сведения об ASP.NET по обеспечению безопасности, обратитесь к следующему документу MSDN:
Проверка подлинности в ASP.NET:.NET руководств по безопасности
http://msdn2.Microsoft.com/en-us/library/ms978378.aspx
Для получения общих сведений о ASP.NET, обратитесь к следующей группе новостей MSDN: back to the top

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 301240 — последний просмотр: 09/22/2011 17:55:00 — редакция: 5.0

Microsoft ASP.NET 1.1, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 64-bit Edition

  • kbconfig kbhowtomaster kbsecurity kbweb kbmt KB301240 KbMtru
Отзывы и предложения