Serg Posted January 21, 2019 Share Posted January 21, 2019 Добрый день! Объявляю в MainForm переменную. При авторизации пользователь вводит свой код. Код отправляется в эту переменную. Правильно ли я понимаю что переменные в MainForm уникальны для каждой сессии? Заходят 2 клиента. Начинаются 2 сессии. После авторизации второго клиента более ранняя сессия отображает код введенный 2 ым клиентом. переменная общая для всех сессий? В чем моя ошибка? Спасибо! Quote Link to comment Share on other sites More sharing options...
Serg Posted January 21, 2019 Author Share Posted January 21, 2019 Спасибо! Quote Link to comment Share on other sites More sharing options...
Dmitriy Posted April 20, 2020 Share Posted April 20, 2020 Такая же проблема сейчас, начинается новая сессия с другой машины под другим пользователем, но в итоге мы видим все доступные меню для первого пользователя (админа). Если завершить сервер, зайти пользователем, то все прекрасно, все админки скрыты, но после этого и админ заходит как пользователь. Не могу никак понять в чем проблема. получается что MainModule не уникален для каждой сессии ? Quote 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 не уникален для каждой сессии ? Уникален. Quote 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? Quote 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 для активации\деактивации тех или иных контролов либо это все надо делать в другом месте? Quote 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!!!! Quote 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. Quote 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!!!! Quote 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 Quote 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 ) Quote Link to comment Share on other sites More sharing options...
Tokay Posted April 20, 2020 Share Posted April 20, 2020 Конечно же глобальные переменные модуля не могут быть по-клиентскими, а вот поля по-клиентских экземпляров UniMainModule могут и будут. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.