2017-11-17 8 views
1

Bei dem Versuch, die Milo-Projektbeispiele für OPC-UA-basierte Clients und Server zu verstehen, wollte man sich zu folgendem Szenario geklärt haben.Unterscheidung eines "Admin" -Ebenenzugriffs für einen Knoten im Milo OPC UA-Projekt?

Als ich versuche WriteExample mit Namespace-String HelloWorld/OnlyAdminCanWrite/ zu testen, mit dem Server zu verbinden, die den Benutzer mit UserNameIdentityToken Werte „admin“ (Benutzername) und password2 (Passwort) bestätigen, war es nicht in der Lage Werte zu schreiben.

Liegt das daran, dass die Identität nicht als admin erkannt wird, wie im folgenden Code in der ExampleNamespace.java-Datei zu sehen ist?

node.setAttributeDelegate(new RestrictedAccessDelegate(identity -> { 
    if ("admin".equals(identity)) { 
     return AccessLevel.READ_WRITE; 
    } else { 
     return AccessLevel.READ_ONLY; 
    } 

Wie unterscheidet sich der Administrator von den anderen Benutzern? getestete Attribute wie AccessLevel und UserAccessLevel, aber sie sind wirksam für den aktuellen Benutzer, der Zugriff versucht.

+0

Sind Sie sicher, dass Sie in die richtige NodeId geschrieben und diese geändert haben, um sich mit den Anmeldeinformationen admin/password2 zu verbinden? Ich habe es gerade getestet und es funktioniert gut. –

Antwort

1

Vielen Dank für die Klarstellung. Ja du hast recht, ich habe die falsche NodeId benutzt. Die rechte NodeId ist "HelloWorld/OnlyAdminCanWrite/String" und um WriteExample zu testen, sollte der zu schreibende Variant-Wert ein String sein. Jetzt funktioniert es !