Webvisu Login auf jeder Seite unterschiedlich?

Chris.O
2018-12-10
2019-01-10
  • Chris.O - 2018-12-10

    Hallo,

    ich hätte eine Frage zur Benutzerverwaltung in der Webvisu. Generell habe ich mehrere Benutzer und Benutzergruppen angelegt.
    Nun möchte ich mich gerne z.B: als Admin anmelden. Hierzu habe ich einen Button erstellt, bei dem die Eingabekonfiguration "Login" eingetragen ist.

    Nun lasse ich mir auf der gleichen Visu-Seite mit den Befehlen

    VisuElems.CurrentUserGroupId
    VisuElems.CurrentUserGroupName
    VisuElems.CurrentRemainingAutoLogoutTime

    den entsprechenden Benutzer, sowie die User-ID und die Zeit, bis zur automatischen Abmeldung anzeigen. => Hat wunderbar funktioniert!

    nun habe ich eine zweite Visu-Seite erstellt, auf der ich auch diese Daten anzeigen lassen möchte. Leider zeigt er mir hier die User-ID 0, sowie Group Name "None" an. Die Zeit passt auch nicht.

    Wenn ich mir nun beide Visualisierungen nebeneinander ansehe, schwankt auch die ID, sowie Name und Zeit auf der "Login-Seite" Zwischen "None" und "Admin" hin und her. Wenn ich nur die "Login-Seite" anzeige, steht es Stabil und richtig auf Admin.
    Wie kann ich das in den Griff bekommen bzw. ist das ein Bug?

    Hab mir auch mal das Example vom Store geladen...wenn ich hier eine neue Visu-Seite erstelle, hab ich das gleiche verhalten.

    Ich verwende einen PFC200 von Wago, sowie CoDeSys V3.5 SP13 Patch 2.

    Wäre Dankbar für eine Lösung

     
  • Chris.O - 2018-12-11

    Hallo,

    so und auch hier bin ich selbst weiter gekommen...
    Ich habe festgestellt, dass ich dieses Phänomen nur habe, wenn ich die Visu-Seiten innerhalb der Programmierumgebung wechsle, ohne einen Button auf der entsprechenden Seite zu nutzen => D.h. öffne ich in der Programmierumgebung nach dem Login eine Visualisierung in meinem Gerätebaum/Verzeichnis, habe ich genau das Phänomen. Wechsle ich innerhalb der Visualisierung auf eine andere Seite (z.B. über einen Button) ist alles i.O.

    Frage:
    da ich auch in einem Programmbaustein die aktuelle User-ID abfrage um innerhalb des Programmes verschiedene Berechnungen zu sperren -falls kein User eingeloggt ist- stellt sich die Frage ob in dem Baustein dann auch der korrekte User ausgelesen wird...

    Und was ist, wenn sich auf zwei verschiedenen Clients ein jeweils anderer User anmeldet? Wird dann hier automatisch jeweils eine neue Instanz gebildet? Scheinbar nicht bzw. nur in der Visualisierung selbst.. im Programmbaustien nicht, da ich das Schwanken hier auch wieder habe, so bald ich mich über die Webvisu mit einem anderen Benutzer anmelde, als über die CoDeSys-Visu

    Gibt es hier eine Lösung?

     
  • m.prestel - 2018-12-17

    Hallo Chris,

    wäre es nicht besser zwei unterschiedliche Methoden zu haben, welche du abhängig von der User-ID und der damit verbundenen Berechtigungen verwendest und der Aufruf über die Visu mittels Berechtigungen abgefragt wird?

    Für allgemeine Programmbausteine wird meines Wissens keine doppelte Instanz verwendet, jedoch verwendet die Visu immer eine separate Instanz für die Elemente/Visualisierungen etc (sofern nicht anders konfiguriert).

    LG
    Marcel

     
  • Chris.O - 2018-12-17

    Hallo Marcel

    daran hatte ich auch schon gedacht, jedoch bräuchte ich dann für jeden Benutzer eine Methode.
    Ich werde da einfach mein Programm etwas umstrukturieren und die Abfragen, die ich bisher im Programm machen wollte, auf die Visu verlagern.

    Trotzdem vielen Dank!

     
  • dkugler - 2019-01-03

    Originally created by: D. Kugler

    Sofern alle Visu-Clients synchronisiert angezeigt werden dürfen, kann man im VisualisierungsManager das Häkchen für "CurrentVisu-Variable verwenden" setzen. Dann wird auf allen Clients immer der gleiche Inhalt angezeigt und somit ist auch der angemeldete Benutzer überall der gleiche. Nur vermute ich, dass das für Dein Projekt nicht taugt, dass alle Visu's synchron laufen? Dann hat mir geholfen zu verstehen, dass innerhalb des Visu-Task alle Visu-Clients durch den ClientManager nacheinander abgearbeitet werden. Will man jetzt auf einen bestimmten Client zugreifen, muss man den zuerst ermitteln und kann dann gezielt Manipulationen vornehmen.
    Ich habe es in einem Projekt so gelöst, dass ich im IEC-Code die Iteration speichere, dann "von Hand" starte und Client für Client in einer while "durchblätter" man kann im jeweiligen Client z.B. den Typ ermitteln, ob Target, WebVisu, Programmiersystem,.. die IP-Adresse auslesen usw.
    Wenn die IP mit einem bestimmten Remotepanel übereinstimmt, werte ich aus, ob ein Benutzer angemeldet ist und gebe nur dann einen Start frei. Am Ende des Durchblätterns die Iteration per Restore wieder starten und alles läuft wie gehabt. Wichtig, solche Funktionen immer im VisuTask aufrufen! Mir haben diese beiden Beispiele sehr geholfen, bzw. da habe ich abgekupfert:
    https://forum.codesys.com/viewtopic.php?f=23&t=6247&p=13503#p13503
    https://forum.codesys.com/viewtopic.php?f=23&t=6247&start=30#p20740
    Gruß aus dem Schwarzwald!

     
  • Chris.O - 2019-01-10

    Hi,
    vielen Dank für die Erläuterung. Ich werde das mal im Hinterkopf behalten!
    Gruß

     

Log in to post a comment.