PDA

Просмотр полной версии : Авторизация при помощи PHP и MySQL


zigfridus
07.10.2011, 11:15
Добрый день.

Хочу посоветоваться. Необходимо реализовать авторизацию в моем Flex приложение. Таблицу с логинами и паролями пользователей я планирую в MySQL создать и получать доступ к ней через PHP. Вопрос, собственно в чем, возможно ли в Flex разделить доступ пользователей к объектам приложения?
К примеру: при успешной авторизации пользователя с правами админа ему предоставляется доступ к панелям, содержащим формы, с добавлением, редактированием и удалением данных, а также к таблице с отображением данных. При авторизации пользователя с урезанными правами ему предоставляется доступ только на просмотр таблицы с данными.
Возможно ли резать доступ на уровни Flex панелей? Или обычно для реализации моих целей во Flex используют какой-то другой способ?

goodguy
07.10.2011, 11:17
Это обычно реализуется на сервере. Флешка должна только отображать то, что ей диктует сервер. Даже если ее хакнут, и выведут админские панели, сервер все равно не примет от них никаких действий, если юзер не админ.

zigfridus
07.10.2011, 11:26
Т.е. можно показывать пользователю, даже если у него нет админских прав, админские панели. Но при попытке совершить им какие-либо админские действия в них пугать его сообщения со стороны сервера. Я правильно Вас понял?

goodguy
07.10.2011, 11:39
Нет. Зачем ему их показывать? Просто при авторизации запрашивать у сервера права пользователя с таким то айди и паролем, и если пользователь - админ, то врубать панельки на клиенте.

zigfridus
07.10.2011, 12:20
Ага, где-то так, как я и планировал раньше.
Большое спасибо.

zigfridus
20.10.2011, 18:11
Добрый день.

Дабы не плодить темы решил тут спросить.
Хочу, к примеру, заблокировать после инициализации программы несколько NavigatorContent для некоторых пользователей. Блокирую NavigatorContent в функции creationComplete() при помощи параметра enabled (например navInsert.enabled = false). Проблема в том, что эти NavigatorContent находятся на разных закладках и поэтому успешно блокируется только NavigatorContent на первой закладке, которая открывается после инициализации, а при попытке блокировать NavigatorContent на закладке, которая еще не прорисовалась - выдается ошибка:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

Подскажите, где правильно прописать операции блокировки?

zigfridus
24.10.2011, 15:31
Почитав литературу, я решил что выбрал неправильный способ блокировки компонент. Более верным было бы использование состояний. Но, переделывая свою программу, я наткнулся на некую трудность. Состояния у меня объявлены в основном компоненте <s:Application>, к которому подключаются несколько внешних MXML компонент <s:NavigatorContent>. Каким образом можно привязать состояния из основного компонента <s:Application> к элементам внутри внешних MXML?

Добавлено через 28 часов 16 минут
Разобрался. Приблизительно выглядит так:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:local="*">

<s:states>
<s:State name="login"/>
<s:State name="guests"/>
<s:State name="administrators"/>
</s:states>

<fx:Script>
<![CDATA[
//При удачной аутентификации меняем текущее состояние
private function resultHandlerCheckUser(event:ResultEvent):void {
currentState = "administrators";
tab1.currentState = "administrators";
}
]]>
</fx:Script>

<mx:TabNavigator id="tabs" includeIn="administrators,guests">
<local:tab1 id="tab1"/>
</mx:TabNavigator>
</s:Application>

В tab1.mxml прописаны такие же состояния.

Толковый у меня монолог получился. Спасибо мне :)