Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разграничение прав пользователей 
V
    Опции темы
alexsal
Дата 13.11.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.8.2007
Где: Украина г. Артемо вск

Репутация: нет
Всего: нет



Привет всем. Помогите пожалуйста решить проблему:
при авторизации в программе, нужно что бы загружался тот или иной JFrame для пользователя
Допустим есть две формы и два пользователя. При автоизации пользователя №1 открывалась форма №1 а для пользователя №2 - форма №2
и надо что бы все это хранилось в базе
Ну логин и пароль хранить - это ясно, а как с формой быть?
Как мне сделать так что бы открывалась нужная форма?
Заранее спасибо.

PM MAIL   Вверх
powerOn
Дата 13.11.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



Цитата(alexsal @  13.11.2007,  19:30 Найти цитируемый пост)
При автоизации пользователя №1 открывалась форма №1 а для пользователя №2 - форма №2

Нужно сообщить программе что за пользователь пришёл, а она в свою очередь должна открыть нужное окно.

Вообще говоря, насколько абстрактный вопрос, настолько абстрактный ответ.  smile 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
alexsal
Дата 13.11.2007, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.8.2007
Где: Украина г. Артемо вск

Репутация: нет
Всего: нет



 smile  ну это понятно, вопрос в дургом. 
Как и что в базе записать что бы для пользователя открыло нужное окно.
И как потом вытянуть эту информацию из базы для открытия этого окна.
PM MAIL   Вверх
Kangaroo
Дата 13.11.2007, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



alexsal, 
имхо хранить вместе с логином и паролем какую-нибудь метку, например "form1".
А потом создавать форму по условию - какая метка, такая и форма.

но это слишком просто выглядит )) может я не понял чего-то?

Это сообщение отредактировал(а) Kangaroo - 13.11.2007, 22:36


--------------------
Lost....
PM MAIL MSN   Вверх
alexsal
Дата 13.11.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.8.2007
Где: Украина г. Артемо вск

Репутация: нет
Всего: нет



да
PM MAIL   Вверх
hamsterKSU
Дата 14.11.2007, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: нет
Всего: 11



Цитата(Kangaroo @  13.11.2007,  21:35 Найти цитируемый пост)
имхо хранить вместе с логином и паролем какую-нибудь метку, например "form1".

ну лучше уже не менку так как в проге потом надо будет проверять эту метку что никакого выигрыша не дает. в таком случае можно просто проверяь права этого юзера, они надеюсь определены в БД.

но даже если и хранить метку в БД то лучше уже наверное название класса(вернее его полное имя) что бы потом ничего не проверять, а создать сразу инстанс
PM MAIL ICQ   Вверх
ecologist
Дата 14.11.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: нет
Всего: 9



Может сделать в базе таблицу с именами форм и с под-таблицей, где прописаны пользователи, которые "допущены" к данной форме.
Форма в конструкторе проверяет, допущен ли к ней пользователь и открывается - илине открывается.

Еще вариант может быть - формировать меню динамически из таблицы (когда-то такое делал на Delphi, до сих пор работает как минимум в двух компаниях) и в таблице с меню прописывается допуск к данному пункту меню. Соответственно при построении меню остаются только те пункты, которые разрешены пользователю.

Ну или еще вариант - имя класса формировать "на лету" и загружать нужный класс. Думаю, что конструктор без параметров вполне реально. Т.к. они все скорее всего наследуются от одного класса - вызывать показ формы. Ну вобщем что-то вроде паттерна Abstract Factory.
PM MAIL   Вверх
Kangaroo
Дата 14.11.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(hamsterKSU @  14.11.2007,  02:33 Найти цитируемый пост)
в таком случае можно просто проверяь права этого юзера, они надеюсь определены в БД.

В принципе, я это и имел ввиду. Метка, которая определяет права пользователя.

Цитата(hamsterKSU @  14.11.2007,  02:33 Найти цитируемый пост)
но даже если и хранить метку в БД то лучше уже наверное название класса(вернее его полное имя) что бы потом ничего не проверять, а создать сразу инстанс 

Я бы не хранил название класса. Рефакторинг никто не отменял и есть возможность получить класснотфаунд случайно.

Цитата(ecologist @  14.11.2007,  09:06 Найти цитируемый пост)
Ну вобщем что-то вроде паттерна Abstract Factory. 

Да, он сюда просится smile


--------------------
Lost....
PM MAIL MSN   Вверх
alexsal
Дата 14.11.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.8.2007
Где: Украина г. Артемо вск

Репутация: нет
Всего: нет



Таблица в которой права пользователя хранятся у меня есть,  я как раз не знаю как мне хранить ссылку на класс и потом обрабатывать ее.

Вот это у меня как раз и вызывает вопрос.
Как это в виде кода выглядит?  smile 

 smile 
PM MAIL   Вверх
hamsterKSU
Дата 14.11.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: нет
Всего: 11



блин, например забиваешь хешьмап
Код

static final HashMap< String,Class> map = new HashMap<String, Class>();
    static{
        map.put("form1", Form1.class);
        map.put("form2", Form2.class);
    }

а потом
Код

map.get("form1").newInstance();


form1 и form2 - Метки, которая определяет права пользователя

Это сообщение отредактировал(а) hamsterKSU - 14.11.2007, 13:37
PM MAIL ICQ   Вверх
alexsal
Дата 15.11.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.8.2007
Где: Украина г. Артемо вск

Репутация: нет
Всего: нет



Спасибо всем за помощь, решение нашел. Регистрирую класс по его названию, название класса хранится в базе
Создаю форму JInteranlFrame и открываю в главной форме (MDI).

Код

obj = Class.forName("полное название класса");

Class mc=(Class) obj;
                    
Constructor constructor = mc.getConstructor();
Object somethingInstance = constructor.newInstance();
            
jframe.add((Component) somethingInstance);

Method setVisibleMethod = mc.getMethod("setVisible", boolean.class);
Object[] setVisibleMethodArgs = {true};
            
setVisibleMethod.invoke(somethingInstance, setVisibleMethodArgs);


Добавлено через 2 минуты и 31 секунду
 smile 
PM MAIL   Вверх
Vurn
Дата 15.11.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



Посмотрите на технологию JavaBeans. Она была создана для возможности сохранения/восстановления/передачи по сети диалогов AWT/Swing. Я особо сильно с ней не разбирался, если честно, но возможности понравились. Фактически, диалог сериализуется и может быть сохранен в базе данных. А потом быстро восстановлен.

p.s. вызов метода setVisible(true) на компоненте через invocation - ИМХО, не есть гуд. Я бы вызывал на jframe.
PM MAIL   Вверх
alexsal
Дата 15.11.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 17.8.2007
Где: Украина г. Артемо вск

Репутация: нет
Всего: нет



Цитата

p.s. вызов метода setVisible(true) на компоненте через invocation - ИМХО, не есть гуд. Я бы вызывал на jframe.


не совсем понял, подробней если можно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.