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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Apex and session, Получить запросом на sql сессию 
:(
    Опции темы
BIV
Дата 2.7.2015, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем доброе время суток!
Есть 2 сайта. 1й на php, 2й собран при помощи apex. На 1м сайте пользователь авторизовывается через базу данных Oracle. Мне нужно получить для apex номер сессии этого пользоаателя, чтобы вставить его в адресную строку браузера и переместить пользователя на нужную страницу в apex. Как мне получить номер сессии пользователя? База данных для сайта на php и apex oracle,  и она одна для всех

Это сообщение отредактировал(а) BIV - 2.7.2015, 13:57
PM MAIL   Вверх
BIV
Дата 3.7.2015, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Странно, неужели это никому не интересно... Наверняка же кто-то пытался совместить свой сайт с апексом.

Вот мои наработки и движение в этом направлении. Код написан на PL/SQL:

Код

create or replace function UDO_F_get_session_apex
(
  username in varchar2,
  password in varchar2,
  page in integer
) return number is
  vc_arr OWA.vc_arr;
  session_id number;
  usern apex_workspace_sessions.user_name%TYPE;
begin
  
-- Защита от пустого ввода
  IF username = '' THEN
     return 0;
  end if; 

  vc_arr(1) := 'TEST';
  OWA.init_cgi_env(vc_arr);
  
  wwv_flow_api.set_security_group_id(wwv_flow_application_install.get_workspace_id());
  
  session_id := apex_custom_auth.get_next_session_id();
  
  apex_custom_auth.login(
      p_uname => username,
      p_password => password,
      p_session_id => session_id,
      p_app_page => page,
      p_entry_point => null,
      p_preserve_case => null
      );
      
   apex_custom_auth.set_session_id(session_id);
   apex_custom_auth.set_user(username);
   apex_application.g_flow_id := page;
   
   select t.user_name into usern from apex_workspace_sessions t
   where t.apex_session_id = session_id;
   
   IF UPPER(usern) = UPPER(username) THEN
     return session_id;
   ELSE
     return 0;
   end if;
/*
  create or replace public synonym UDO_F_get_session_apex for UDO_F_get_session_apex;
  grant execute on UDO_F_get_session_apex to public;
  */
end UDO_F_get_session_apex;


Пытаюсь написать функцию, в которой проходит авторизация пользователя и возвращает номер сессии. В принципе, функция рабочая, она возвращает номер сессии, проверяет наличие пользователя и его пароль, но есть сложности:
   Почему-то вставив номер сессии в f?p=104:1:&SESSION. (вставляю на место &SESSION.), открывается окно авторизации. Если я, находясь на странице  f?p=104:1: , вставляю полученную сессию, например f?p=104:2:1642607679570158, то попадаю на страницу авторизации f?p=104:101. Если я нажму на кнопку в браузере "назад", потом "вперед", то получаю f?p=104:101:1642607679570158. Как бы сессия прописалась, но я на странице авторизации...
Что делать? Куда смотреть? Как?

Это сообщение отредактировал(а) BIV - 3.7.2015, 21:36
PM MAIL   Вверх
Akina
Дата 4.7.2015, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

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



C чего ты решил, что сессия  это только номер? А адрес и порт клиента? состояние соединения? и хренова гора других мелочей? Нифига у тебя не получится...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
BIV
Дата 4.7.2015, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



1) Тут не только номер. apex_custom_auth.login() как раз, вроде, и приписывает номер сессии к конкретному пользователю.
2) Зачем адрес и порт клиента??? Есть адрес самого сайта, скажем http://адрес:8080/apex/f?p=104:101. Вы же при создании сайта не учитываете адреса всех клиентов и их порты?))
3) И какие же эти хренова гора мелочей?

Если вы никогда не работали с APEX, прошу проходить мимо и не писать тут лишнюю болтовню. Все возможно, надо только добраться до нужной инфы
PM MAIL   Вверх
Addidas
Дата 24.7.2015, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так мало получить номер сессии, там куки же прописываются всяк разные.
Можно запилить Custom Auth Scheme и в ней логику авторизации описать.
Стандартная Auth Scheme - не проканает - как мне видитцо.

Какая версия APEX ??

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


Бывалый
*


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

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



Вот было бы интересно узнать что именно он прописывает или какую функцию использует. APEX 4.2.
PM MAIL   Вверх
Addidas
Дата 6.9.2015, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не понимаю в чём у вас проблема.
Запилите свои Authentication Schemes и Authorization Schemes.
Примеры есть даже там при создании собственной схемы - нажмите на Label полей - там даже code samples присутствуют.
Сделайте свою схемы авторизации и аутентификации да сделайте их активными.
Будет вам счастье.
Вы пробовали или не хотите пробовать и гуглить, а хотите сразу запилиную дверь? smile

Это сообщение отредактировал(а) Addidas - 6.9.2015, 19:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

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

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


 




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


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

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