Erkennen welche Page beim User offen ist

22. Januar 2016 08:46

Hallo!

Ist es mögliche für einen NAS zu erkennen welche Fenster bei einem User offen sind?
Ich möchte einen Seissionkiller programmieren der User nach einer gewissen Leerlaufzeit entfernt um Lizenzen zu sparen. Allerdings darf dieser nicht entfernt werden wenn gewisse Pages geöffnet sind.

Das einzigste was mir dazu einfällt ist, wenn der User die "sicheren" Pages öffnet das ein Vermerk in den Benutzereinrichtung hinterlegt wird und wenn er die Page wieder schliesst der Vermerk verschwindet!?

Grüße
Tobi

Re: Erkennen welche Page beim User offen ist

22. Januar 2016 09:02

t000bi hat geschrieben:Vermerk in den Benutzereinrichtung

Eine andere Möglichkeit sehe ich gerade auch nicht. :-(
Dabei sollte man dann aber auch bedenken, dass die User Session -aus welchem Grund auch immer - unerwartet beendet werden könnte.
Dann würde das Flagge gesetzt bleiben.
Mögliche Lösung hierfür wäre, nachts alle Flags per NAS zurücksetzen.

Etwas aufwändiger wird es, wenn es mehrere "sichere Pages" gibt, dann bräuchte man für jede "sichere Page" ein Flag.

Erkennen welche Page beim User offen ist

22. Januar 2016 11:57

Ok danke, ich werde das dann mal so machen.

Re: Erkennen welche Page beim User offen ist

24. Januar 2016 09:24

Leider habe ich ein größeres Problem in NAV 2013 gibt es nicht mehr diese "Leerlaufzeit" in der Session Tabelle.
Wie kann ich jetzt herausfinden, wann ein User inaktiv ist? Aber er darf nur gelöscht wenn kein Haken in bestimmten Felder gesetzt sind.

Da muss es doch schon Erfahrungspunkte geben. Habe leider über Suche nichts passendes gefunden.

Re: Erkennen welche Page beim User offen ist

24. Januar 2016 11:07

Halo,

ich habs noch nicht ausprobiert, aber versuchs doch mal mit dem "ClientServicesIdleClientTimeout" in der "CustomSettings.config" des Servietiers.

Gruß Fiddi

Re: Erkennen welche Page beim User offen ist

24. Januar 2016 13:25

fiddi hat geschrieben:ich habs noch nicht ausprobiert, aber versuchs doch mal mit dem "ClientServicesIdleClientTimeout" in der "CustomSettings.config" des Servietiers.


die Lösung habe ich hier gefunden

Allerdings muss ich im Programm vorher abfragen können, ob ich den User überhaupt rausschmeißen darf!?

Gruß Tobi

Re: Erkennen welche Page beim User offen ist

27. Januar 2016 21:38

Hallo,

folgendes wäre auch möglich:

- Ergänze die Tabelle 91 "User Setup" um ein DateTime Feld mit Namen "Letzte Aktivität" um die letzte Aktivität eines Users zu speichern.

- Bau dir nach dieser Anleitung eine "Session Manager" Page: http://www.comporsys.de/dynamics-nav-bl ... n-manager/
Die fertig umgebaute Page hänge ich diesem Post an. Somit kannst du dir die nächsten Schritte sparen. Diese enthält auch eine Action um die Session richtig zu beenden. Wenn man nämlich einfach nur die Zeile löscht, wie im Blog beschrieben, passiert beim User gar nichts.

- Ergänze die "Session Manager" Page um die Globale Variable "Leerlaufzeit" vom Datentyp "Duration". Lege ein Feld an, welches auf diese Variable verweist.

- Ergänze die "Session Manager" Page um folgenden Code im OnAfterGetRecord Trigger:

Code:
CLEAR(Leerlaufzeit);
IF UserSetup.GET("User ID") AND (UserSetup."Letzte Aktivität" <> 0DT) THEN
  Leerlaufzeit := CURRENTDATETIME - UserSetup."Letzte Aktivität";


- Ergänze die "Session Manager" Page um folgende Funktion:

Code:
Funktionsname: LogLastActivityTime
Lokale Variable in der Funktion: "UserSetup" vom Datentyp "Record". Subtyp="User Setup"

Code:
IF NOT UserSetup.GET(USERID) THEN
  EXIT
ELSE BEGIN
  UserSetup."Letzte Aktivität" := CURRENTDATETIME;
  UserSetup.MODIFY;
END;




So, nun müsste man nur noch an den Stellen wo viel gearbeitet wird die Funktion von der "Session Manager" Page aufrufen. Z.B. in den OnAfterGetRecord Triggern der gut genutzten Pages.
Allerdings geht dies auch etwas einfacher; und zwar über die Codeunit 1.

Ruf die Funktion in folgenden Triggern auf:
GetSystemIndicator //Wird nach dem Login aufgerufen
OnDatabaseInsert
OnDatabaseModify
OnDatabaseDelete
OnDatabaseRename

Die 4 letzten Trigger durchlaufen aber nur wenn die entsprechenden Tabellen im Aktivitätenprotokoll mitgeloggt werden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.