Serg Posted January 21, 2019 Share Posted January 21, 2019 Добрый день! Объявляю в MainForm переменную. При авторизации пользователь вводит свой код. Код отправляется в эту переменную. Правильно ли я понимаю что переменные в MainForm уникальны для каждой сессии? Заходят 2 клиента. Начинаются 2 сессии. После авторизации второго клиента более ранняя сессия отображает код введенный 2 ым клиентом. переменная общая для всех сессий? В чем моя ошибка? Спасибо! Link to comment Share on other sites More sharing options...
Serg Posted January 21, 2019 Author Share Posted January 21, 2019 Спасибо! Link to comment Share on other sites More sharing options...
Dmitriy Posted April 20, 2020 Share Posted April 20, 2020 Такая же проблема сейчас, начинается новая сессия с другой машины под другим пользователем, но в итоге мы видим все доступные меню для первого пользователя (админа). Если завершить сервер, зайти пользователем, то все прекрасно, все админки скрыты, но после этого и админ заходит как пользователь. Не могу никак понять в чем проблема. получается что MainModule не уникален для каждой сессии ? Link to comment Share on other sites More sharing options...
Sherzod Posted April 20, 2020 Share Posted April 20, 2020 20 minutes ago, Dmitriy said: получается что MainModule не уникален для каждой сессии ? Уникален. Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted April 20, 2020 Administrators Share Posted April 20, 2020 54 minutes ago, Dmitriy said: Такая же проблема сейчас, начинается новая сессия с другой машины под другим пользователем, но в итоге мы видим все доступные меню для первого пользователя (админа). Если завершить сервер, зайти пользователем, то все прекрасно, все админки скрыты, но после этого и админ заходит как пользователь. Не могу никак понять в чем проблема. получается что MainModule не уникален для каждой сессии ? Hello, Are you using HyperServer? Link to comment Share on other sites More sharing options...
Dmitriy Posted April 20, 2020 Share Posted April 20, 2020 31 minutes ago, Sherzod said: Уникален. Возможно надо вызывать beforelogin и обнулять все переменные и все запросы в sql подчищать, может есть какие - то примеры реализации разграничения прав доступа к тем или иным элементам mainform в зависимости от пользователя? Я только начал изучать Unigui, возможно не все нюансы еще постиг, приведу пример как я разграничиваю (пытаюсь) права: UnimainModule var LoggedUser,Otdel,filename : string; adminmode: boolean; ----------------------------------------------------- UniloginModule procedure TUniLoginForm1.UniBitBtn1Click(Sender: TObject); var hash: string; begin UniMainModule.q_pass.SQL.Clear; UniMainModule.Q_pass.SQL.Add('select * from users where fio ='''+unicombobox1.Text+''''); UniMainModule.Q_pass.Active:=true; adminmode:=false; // режим входа для журнала заявок // hash := THashSHA2.GetHashString(UniEdit1.Text,THashSHA2.TSHA2Version.SHA256); if UniMainModule.q_pass.FieldByName('pass').Value = UniEdit1.Text then begin if (UniMainModule.q_pass.FieldByName('Zayavki_org_adm').AsBoolean = true) then adminmode:=true; Otdel:= UniMainModule.q_pass.FieldByName('otdel').AsString; LoggedUser := UniComboBox1.Text; if UniCheckBox1.Checked then begin UniApplication.Cookies.SetCookie('_loginname', UniComboBox1.Text, Date + 30.0); // Expires 30 days from now UniApplication.Cookies.SetCookie('_pwd', UniEdit1.Text, Date + 30.0); end; ModalResult := mrOK; end else ShowMessage('Введен неверный пароль'); Main - главная форма procedure TMainForm.UniFormCreate(Sender: TObject); begin UniLabel1.Caption := LoggedUser; if adminmode=true then begin admin.Visible:=true; // Пункты в UniMenuItems1 biot.visible:=true;// end else admin.Visible:=false; ---------------------------------------------------------------- Так же у меня есть PageControl в котором я создаю фремы, правильно - ли там проверять переменные из MainModule для активации\деактивации тех или иных контролов либо это все надо делать в другом месте? Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted April 20, 2020 Administrators Share Posted April 20, 2020 1 minute ago, Dmitriy said: var LoggedUser,Otdel,filename : string; adminmode: boolean; Global vars!!!! Link to comment Share on other sites More sharing options...
Dmitriy Posted April 20, 2020 Share Posted April 20, 2020 8 minutes ago, Farshad Mohajeri said: Hello, Are you using HyperServer? Hello, no i use standalone server and last version of Unigui Complete. Link to comment Share on other sites More sharing options...
Dmitriy Posted April 20, 2020 Share Posted April 20, 2020 3 minutes ago, Farshad Mohajeri said: Global vars!!!! Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted April 20, 2020 Administrators Share Posted April 20, 2020 Global variables are shared among all sessions. You should move them inside public section of the MainModule. http://www.unigui.com/doc/online_help/index.html?general-design-concept.htm Link to comment Share on other sites More sharing options...
Dmitriy Posted April 20, 2020 Share Posted April 20, 2020 3 minutes ago, Farshad Mohajeri said: Global variables are shared among all sessions. You should move them inside public section of the MainModule. http://www.unigui.com/doc/online_help/index.html?general-design-concept.htm Oh, sorry, Thank you for explain ) Link to comment Share on other sites More sharing options...
Tokay Posted April 20, 2020 Share Posted April 20, 2020 Конечно же глобальные переменные модуля не могут быть по-клиентскими, а вот поля по-клиентских экземпляров UniMainModule могут и будут. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now