В случае, когда для доступа к защищенному содержимому требуется проверка подлинности, приложение AIR обычно получает учетные данные для проверки подлинности через пользовательский интерфейс.
Ниже приведен пример простого пользовательского интерфейса запроса учетных данных для Flex. Он состоит из объекта panel с двумя объектами TextInput: один для имени пользователя и один для пароля. На панели также есть кнопка, вызывающая метод
credentials()
.
<mx:Panel x="236.5" y="113" width="325" height="204" layout="absolute" title="Login">
<mx:TextInput x="110" y="46" id="uName"/>
<mx:TextInput x="110" y="76" id="pWord" displayAsPassword="true"/>
<mx:Text x="35" y="48" text="Username:"/>
<mx:Text x="35" y="78" text="Password:"/>
<mx:Button x="120" y="115" label="Login" click="credentials()"/>
</mx:Panel>
Метод
credentials()
— это определяемый пользователем метод, передающий значения имени пользователя и пароля методу
setDRMAuthenticationCredentials()
. После передачи значений метод
credentials()
сбрасывает значения в объектах TextInput.
<mx:Script>
<![CDATA[
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
}
]]>
</mx:Script>
Для реализации этого простого интерфейса можно сделать панель частью нового состояния. Новое состояние создается на основе исходного с помощью объекта DRMAuthenticateEvent. В примере ниже содержится объект VideoDisplay с атрибутом source, который указывает на защищенный FLV-файл. В данном случае метод
credentials()
изменен таким образом, чтобы возвращать программу в исходное состояние. Это происходит после передачи учетных данных пользователя и сброса значений объекта TextInput.
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="800"
height="500"
title="DRM FLV Player"
creationComplete="initApp()" >
<mx:states>
<mx:State name="LOGIN">
<mx:AddChild position="lastChild">
<mx:Panel x="236.5" y="113" width="325" height="204" layout="absolute"
title="Login">
<mx:TextInput x="110" y="46" id="uName"/>
<mx:TextInput x="110" y="76" id="pWord" displayAsPassword="true"/>
<mx:Text x="35" y="48" text="Username:"/>
<mx:Text x="35" y="78" text="Password:"/>
<mx:Button x="120" y="115" label="Login" click="credentials()"/>
<mx:Button x="193" y="115" label="Reset" click="uName.text='';
pWord.text='';"/>
</mx:Panel>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:Script>
<![CDATA[
import flash.events.DRMAuthenticateEvent;
private function initApp():void
{
videoStream.addEventListener(DRMAuthenticateEvent.DRM_AUTHENTICATE,
drmAuthenticateEventHandler);
}
public function credentials():void
{
videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm");
uName.text = "";
pWord.text = "";
currentState='';
}
private function drmAuthenticateEventHandler(event:DRMAuthenticateEvent):void
{
currentState='LOGIN';
}
]]>
</mx:Script>
<mx:VideoDisplay id="video" x="50" y="25" width="700" height="350"
autoPlay="true"
bufferTime="10.0"
source="http://www.example.com/flv/Video.flv" />
</mx:WindowedApplication>