Авторизация же, представляющая собой предоставление прав, выполняется в ходе запроса пользователем определенного документа. Права доступа для различных пользователей и групп прописываются в файле Web.config в разделе <authorization>. Стоит учесть, что настройки авторизации длякаждого подкаталога могут различаться, для чего в этом подкаталоге создается свой файл Web.config. В данном проекте создано 2 файла Web.config. Один из них устанавливает правила авторизации для корневого каталога и его содержимого. Второй находится в подкаталоге /account и разрешает доступ неавторизованным пользователям лишь к странице регистрации и авторизации. С полным текстом файла Web.config можно ознакомиться в Приложении 2.
.Хранение паролей в базе данных в первозданном виде является небезопасным. В случае получения несанкционированного доступа к базе или sql-инъекции, профили пользователей могут быть взломаны. Для устранения подобной уязвимости пароли в базе хранятся в зашифрованном виде.
Для реализации подобного в .NET реализованы специализированные методы:
Ø byte[] EncryptPassword(byte[] password)
//осуществляет шифрование выбранной строки. Возвращает массив байтов, которые содержат зашифрованный пароль.
Ø byte[] DecryptPassword(byte[] encodedPassword)
//осуществляет дешифровку выбранной строки. Возвращает массив байтов, которые содержат расшифрованный пароль.
Т.к. оба метода работают с массивами байтов, а данные, введенные пользователем для пароля и данные, хранящиеся в базе представляют собой строку, необходим еще один метод – получение из строки массива байтов и из массива байтов – строки. Данные методы реализованы в .NET в пространстве имен System.Text.
Ø byte[] GetBytes(string s)
//в качестве входных параметров получает строку, которую преобразуется в массив байт и возвращается в качестве возвращаемого значения.
Ø string GetString(byte[] b)
//в качестве входных параметров получает массив байт, который преобразуется в строку и возвращается в качестве возвращаемого значения.
Вызов данных методов осуществляется через класс, представляющий кодировку символов - Encoding.
Пример: Encoding.Default.GetBytes(bytes);
Только после приведения данных в нужный формат можно использовать методы шифровки и дешифровки.
В данном проекте используется следующий алгоритм:
Запись пароля в БД – преобразование пароля в массив байт, шифровка, преобразование полученного массива в строку и запись этой строки в БД.
Считывание пароля из БД – считывание строки, преобразование строки в массив байтов, дешифровка, преобразование получившегося массива байтов в строку.
Для использования функций шифрования необходимо указать ключи, которые используются при шифровке и дешифровке. Данные ключи можно указать в файле Web.config в разделе <machineKey>. С текстом файла можно ознакомиться в Приложении 2.
Основной целью задания ролей является обеспечение удобного способа управления правилами доступа для групп пользователей. Вы создаете пользователей, а затем назначаете их ролям. Обычно затем создается набор страниц, доступ к которым должны иметь только определенные пользователи. Часто эти страницы помещаются в отдельную папку. После этого можно задать правила, предоставляющие и запрещающие доступ к запрещенным папкам. Например, можно настроить веб-узел таким образом, чтобы члены или руководители имели доступ к страницам в запрещенной папке, а все остальные пользователи — нет. Если неавторизованный пользователь попытается просмотреть запрещенную страницу, то он увидит сообщение об ошибке или будет перенаправлен на указанную вами страницу[4].
Для реализации управления ролями вASP.NET по умолчанию используется класс RoleProvider. Как и класс MembershipProvider он может быть унаследован и переопределен, что мной и было сделанной, в результате чего был создан класс PowerPlayRolesProvider.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.