12.05.2006, 13:15 | #1 |
Участник
|
Быстрая авторизация в Web + переход по сформированной ссылке
Озабочен такой проблемой. Если сначала логинишься в Web-портал Axapta, то после этого точные ссылки, типа
Код: http://axserver/axweb/default.asp?WMFN=RL_ConfirmableInventJournalTable&WMFT=D&WPG=RLt_HomePageOnline&WTID=154&WREC=302668&WKEY=[/url][65534:302668] Мне нужно было добиться чтобы пользователь, ни разу не залогинившись ранее в портал, тыкал на точную ссылку и попадал куда надо. Т.е. 1. Чтобы происходил автологин в Web подобно авторизации обычного клиента по доменному имени. 2. Чтобы после автологина ссылка корректно обрабатывалась. Первый пункт решился. Т.е. если обратиться на урл портала, то происходит автологин, пользователь "за кадром" логинится соответствующим его сетевому имени Web-пользователем и видит начальную страницу портала. Но если обратиться в первый раз на урл портала с точной ссылкой, то она "теряется" - метод Show() класса WebApplication использует сессию (объект WebSession), с пустым args, хотя он должен содержать распарсенные из урла точной ссылки параметры (WMFN, WKEY и т.д.). Я в концептуальном тупике - не знаю с чего начать, что копать, в каком месте смотреть. Пожалуйста, посоветуйте что-нибудь, буду очень признателен. Последний раз редактировалось Romb; 12.05.2006 в 13:17. |
|
12.05.2006, 13:43 | #2 |
Участник
|
Пока писал сообщение понял, что "ошибка" кроется в WebApplication.Logon(), там есть на 60 строчке есть редирект на переданный url (weblink) и так как он пустой, то происходит редирект на урл домашней страницы (а она конечно "чистая" без параметров в урле) и, в этом случае все параметры теряются.
Код: webSession.redirect(redirectTo); Уф... Надеюсь на правильном пути. |
|
12.05.2006, 16:31 | #3 |
Участник
|
Цитата:
Сообщение от Romb
Первый пункт решился...
|
|
15.05.2006, 04:53 | #4 |
Участник
|
Там проблема в том, что в web-приложении (функция Axapta() в файле i_axaptafunctions.asp) в строках:
Код: userid = Ws.Call("SwitchAxaptaUser") if (Not (userid = "")) then password = Ws.Call("switchWebUserPassword") weblogin = Ws.Call("SwitchWebUser") ... По идее надо обновлять переменную _switchWebUser, в том же месте, где и устанавливается _switchAxaptaUser (метод WebApplication.Logon()). Но пока я сделал заплатку, она работает. Я изменил метод WebSession.SwitchWebUser(). Код: WebLogin switchWebUser() { ; if (_switchAxaptaUser) _switchWebUser = (select firstonly WebLogin from WebUser where WebUser.UserId == _switchAxaptaUser).WebLogin; return _switchWebUser; } Да. Чтобы это все работало IIS должен использовать "Integrated Windows Authentification". Последний раз редактировалось Romb; 15.05.2006 в 05:12. |
|
|
За это сообщение автора поблагодарили: leshy (1). |
15.05.2006, 04:54 | #5 |
Участник
|
Это конечно забавно, но я порешал и остальные свои проблемы с Web-порталом, расскажу чуть позже.
|
|