p align="left">В данной системе используется Forms-аутентификация, которая применяет схему аутентификации прикладного уровня, основанную на билетах. Такая схема предназначена для ASP.NET-приложений, которые не связывают со своими пользователями учетные записи Windows. Аутентификацию Forms применяется совместно с анонимной IIS-аутентификацией. Схема аутентификации системы для приложения задается в конфигурационном файле. На рисунке рисунок 4.1 представлена схема аутентификации данного приложения. Рисунок 3.1 - Схема аутентификации При аутентификации на основе форм, когда доступ к ресурсу, требующему аутентификации, отклоняется, пользователь переадресовывается на заранее заданный URL, указывающий на страницу входа. Это специальная ASP.NET-страница, в которой пользователь может ввести удостоверения (логин, пароль). Затем страница входа сверяет удостоверения с базой данных и с помощью класса System.Web.FormsAuthentication формирует зашифрованный билет аутентификации для клиента. Этим билетом может быть cookie или специальный большой двоичный объект, добавляемый к URL. При каждом последующем запросе клиент передает билет, и механизм аутентификации на основе форм автоматически обрабатывает его, генерируя идентификацию пользователя для данного запроса. ASP.NET 2.0 предоставляет два компонента для работы с аутентификацией: сервис Membership и семейство элементов управления Login. Сервис Membership, доступный через класс System.Web.Security.Membership, позволяет определить различные виды членства на сайте. Информацию о членах можно хранить в различных местах - в базах данных, текстовых файлах или даже в учетных записях Windows. Данная ситема использует в качестве хранилища базу данных. Конфигурировать членство можно индивидуально для каждого пользователя или на основе ролей с помощью сервиса Role Manager. Роли облегчают конфигурирование, так как можно создавать роли и потом добавлять пользователей к готовым ролям. На рисунке 4.2 представлена схема провайдера данной системы. После определения идентификация пользователя, выдавшего запрос, принимаются решения, связанные с управлением доступом. В ASP.NET два встроенных механизма авторизации, управляющих доступом на уровне URL: File и URL. В данной работе используется URL авторизация. При авторизации URL действуют правила управления доступом, задаваемые в конфигурационном файле, которые разрешают или запрещают доступ в зависимости от имени пользователя или ролей. Рисунок 4.2 - Схема Membership провайдера Правила управления доступом для авторизации URL задаются на уровне URL в конфигурационном разделе (рисунко 4.3). Рисунок 4.3 - Схема авторизации Важным моментом в обеспечении защиты web-приложения является отсутствие файлов, которые не планируется передавать клиентам. В описываемой системе такие файлы были удалены из физической структуры каталогов, начиная с самого верхнего каталога, помеченного в конфигурации IIS как Web-приложение (виртуальный каталог). Так как если файл не принадлежит Web-пространству имен, он не будет доступен при запросах к этому пространству. Так же отслеживаются файлы загружаемые в систему. Следующая настройка (рисунок 4.4) файла Web.config запрещает загружать в систему клиентам данного приложения файлы с размером больше, чем указано. Рисунок 4.4 - Элемент файла Web.config ВЫВОДЫ Анализ представленных на рынке систем автоматизированного поиска позволяет отметить общую тенденцию в подходе к разработке таких систем: в рамках разрабатываемых средств они стремятся охватить все элементы традиционного поиска. Основными недостатками существующих систем являются недостаточная их локализация. То есть они являются общими системами и не учитывают потребности конкретных процессов. Эти проблемы может решить разработанная система, которая автоматизирует процесс поиска банкоматов и отделений банков с целью эффективного взаимодействия между пользователями банковских услуг и банками. Внедрение системы в автоматизированный поиск банкоматов отделений позволит: - Поиск банкоматов с отображением их на карте с учётом вашего текущего местоположения. Ваше текущее местоположение с помощью HTML5 Geolocation. Если Ваш браузер этого не поддерживает или Ваше местоположение не удалось точно определить, достаточно кликнуть на карте, что бы указать, где Вы находитесь и начать поиск; - Поиск магазинов, где Вы можете расплатиться с помощью банковских карт; - Поиск кафе, баров, ресторанов, где вы можете провести время, расплатившись без использования наличных средств; - Информация и статьи о банковских картах, их особенностях и способах оплаты. Возможность удобного поиска с затратой минимальных усилий, быстрое нахождение банкоматов и отделений банков в любом уголке Украины,- все это делает систему автоматизированного поиска банкоматов не опциональным дополнением, а продиктованной современными условиями необходимостью. ПЕРЕЧЕНЬ ССЫЛОК 1. Zoho - Online Office, Word Processor, Spreadsheet, Presentation, CRM Электронный ресурс - Режим доступа: http://zoho.com/ - 16.02.2008 г. - Загл. с экрана. 2. Moodle - A Free, Open Source Course Management System for Online Learning Электронный ресурс - Режим доступа: http://moodle.org/ - 10.03.2008 г. - Загл. с экрана. 3. WebCT Communities Электронный ресурс - Режим доступа: http://www.webct.com/webct/ - 10.02.2008 г. - Загл. с экрана. 4. Группы Google Электронный ресурс - Режим доступа: http://groups.google.com.ua/ - 26.04.2008 г. - Загл. с экрана. 5. IBM Lotus Software Электронный ресурс - Режим доступа: http://www-306.ibm.com/software/lotus/ - 26.02.2008 г. - Загл. с экрана. 6. Рихтер Дж. Программирование на платформе Microsoft .NET Framework. Мастер-класс Дж. Рихтер: пер. с англ. - СПб.: Питер, 2005. - 512 с. 7. ASP.NET (.NET Framework) Электронный ресурс - Режим доступа: http://msdn.microsoft.com/en-us/library/bb400852.aspx - 10.05.2008 г. - Загл. с экрана. 8. Троелсен Э. Язык программирования C# 2005 и платформа .NET 2.0. HTML Э. Троелсен: - М.; ООО «И.Д. Вильямс», 2007. - 1168 с. 9. Сеппа Д. Программирование на Microsoft ADO.NET 2.0. Мастер класс Д. Сеппа: пер. с англ. - М.: Издательский дом «Русская редакция»; СПб.: Питер, 2007. - 784 с. 10. Мак-Дональд М. Microsoft ASP.NET с примерами на C# 2005 для профессионалов М. Мак-Дональд: пер. с англ. - М.; ООО «И.Д. Вильямс», 2006. - 1408 с. 11. Буч Г., Якобсон А. UML Г.Буч. - СПб.:Питер, 2005.-736 с. 12. Integration Definition Metodology - Режим доступа: http://www.idef.ru/ - 12.12.2007 г. - Загл. с экрана. 13. Дейт К. Введение в системы базы данных, 8-е издание К. Дейт: пер. с англ. - М.: Издательский дом «Вильямс», 2005. - 1328 с. 14. Хэндерсон К. Профессиональное руководство по SQL Server: хранимые процедуры, XML, HTML К. Хэндерсон. - СПб.:Питер, 2005. - 620 с. Приложение А Программный код приложения /// <summary> /// Represent course information. /// </summary> public class Course { ... } /// <summary> /// The class CourseManagement represents methods that makes possible do /// actions with course information. /// </summary> public class CourseManagement { /// <summary> /// Gets all courses that are available for study. /// </summary> /// <returns>The collection of courses.</returns> [DataObjectMethod(DataObjectMethodType.Select)] public IList<Course> SelectCourses() { List<Course> courseList = new List<Course>(); SqlConnection connection = new SqlConnection(_connectionString); using (SqlCommand command = new SqlCommand(Procedure.SelectAllCourse, connection)) { command.CommandType = CommandType.StoredProcedure; connection.Open(); SqlDataReader sqlDataReader = command.ExecuteReader(); while (sqlDataReader.Read()) { Course course = new Course(sqlDataReader.GetGuid(0), HttpUtility.HtmlDecode(sqlDataReader.GetString(1)), HttpUtility.HtmlDecode(sqlDataReader.GetString(7)), sqlDataReader.GetGuid(8), sqlDataReader.GetDateTime(3), sqlDataReader.GetDateTime(4), sqlDataReader.GetBoolean(5), sqlDataReader.GetInt32(6), sqlDataReader.GetInt32(11), HttpUtility.HtmlDecode(sqlDataReader.GetString(2)), HttpUtility.HtmlDecode(sqlDataReader.GetString(9)), HttpUtility.HtmlDecode(sqlDataReader.GetString(10))); courseList.Add(course); } connection.Close(); } return courseList; } /// <summary> /// Gets subjects of the specified course. /// </summary> /// <param name="courseId">Course identifier</param> /// <returns>The collection of courses.</returns> public List<string> GetCourseSubjects(Guid courseId) { List<string> subjects = new List<string>(); using (SqlConnection connection = new SqlConnection(_connectionString)) { using (SqlCommand cmd = new SqlCommand(Procedure.SelectCurriculumCourseContent, connection)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter(ParameterName.CourseId, SqlDbType.UniqueIdentifier)); cmd.Parameters[ParameterName.CourseId].Value = courseId; connection.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { subjects.Add(reader.GetString(2)); } connection.Close(); } } return subjects; } /// <summary> /// Insert course to database. /// </summary> /// <param name="course">Course data.</param> /// <returns>Inserted course identifier.</returns> [DataObjectMethod(DataObjectMethodType.Insert)] public Guid InsertCourse(Course course) { SqlConnection connection = new SqlConnection(_connectionString); Guid courseId = new Guid(); using (SqlCommand command = new SqlCommand(Procedure.InsertCourse, connection)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(TitleParameter, SqlDbType.NVarChar).Value = course.Title; command.Parameters.Add(CourseKeyParameter, SqlDbType.NVarChar).Value = course.CourseKey; command.Parameters.Add(DescriptionParameter, SqlDbType.NVarChar).Value = course.Description; command.Parameters.Add(StartDateParameter, SqlDbType.DateTime).Value = course.StartDate; command.Parameters.AddWithValue(EndDateParameter, SqlDbType.DateTime).Value = course.EndDate; command.Parameters.Add(IsMasterParameter, SqlDbType.Bit).Value = course.IsMaster; command.Parameters.Add(AmountCreditsParameter, SqlDbType.Float).Value = course.AmountCredits; command.Parameters.Add(MainTeacherIdParameter, SqlDbType.UniqueIdentifier).Value = course.MainTeacherId; command.Parameters.Add(ReadingParameter, SqlDbType.NVarChar).Value = course.Reading; command.Parameters.Add(AssessmentMethodParameter, SqlDbType.NVarChar).Value = course.AssessmentMethod; command.Parameters.Add(CountStudentInTeamParameter, SqlDbType.Int).Value = course.CountStudentInTeam; connection.Open(); courseId = new Guid(command.ExecuteScalar().ToString()); connection.Close(); } return courseId; }
Страницы: 1, 2, 3, 4
|