M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Аутентификация пользователя в отчете

    Два объекта Rave Reports позволяют включить в проекте отчета механизм проверки имени пользователя и пароля. Это объекты Simple Security Controller (элемент simpleSecurity) и Data Lookup Security Controller (элемент LookupSecurity), которые доступны для выбора в диалоге создания объектов доступа к данным визуальной среды Rave Reports (см. рис. 24.4). Создается новый объект командой File | New Data Object главного меню Rave Reports. Созданный объект появляется в ветви Data View Dictionary дерева проекта.

    Элемент SimpleSecurity предназначен для хранения списка пользователей и их паролей. Он имеет свойство userList, в котором в формате userName = Password заносятся имена и пароли пользователей.

    Элемент LookupSecurity обеспечивает загрузку имен пользователей и паролей из таблицы базы данных. Для этого к нему через свойство Dataview должен быть подключен соответствующий просмотр данных. В свойстве userField необходимо указать поле, которое содержит имена пользователей, а в свойстве PasswordField задать поле с паролями.

    Теперь несколько слов о том, как подключить созданные объекты.

    Вы можете организовать аутентификацию на двух уровнях — уровне проекта и уровне отчета. В обоих случаях используется свойство securityControl объекта проекта или отчета. В нем необходимо выбрать нужный объект аутентификации.

    Однако это действие не сделает ваши отчеты сколько-нибудь защищеннее — все необходимые проверочные операции придется написать самому в исходном коде приложения Delphi. Единственное отличие в аутентификации по уровням в том, где именно вы сможете получить доступ к объекту аутентификации — из компонента проекта или отчета.

    Для организации простейшей проверки имени пользователя и пароля на уровне проекта в приложении нужно написать примерно такой код:

    rpReport.Open; if rpReport.ProjMan.SecurityControi.IsValidUser(

    edUserName.Text, edPassword.Text} 

    then rpReport.Execute

     else ShowMessage('Доступ запрещен');

      rpReport.Close;

    В данном случае доступ к объекту аутентификации SecurityControд (класс TRaveBaseSecurity) осуществляется через объект менеджера проекта projMan (класс TRaveProjectManager).

    Метод

    function IsValidUser(AUserName: string;

    APassword: string): Boolean;

    этого объекта возвращает значение True, если переданные в параметрах имя и пароль не совпадают со значениями из списка или базы данных.

    Для уровня отчета код выглядит так:

    rpReport.Open;

    if rpReport.ProjMan.ActiveReport.

    SecurityControl.IsValidUser(

    edUserName.Text, edPassword.Text) 

    then rpReport.Execute

     else ShowMessage('Доступ запрещен');

    rpReport.Close;

    Здесь объект ActiveReport (класс TRaveReport) представляет текущий отчет.