Dynamische räumliche Einschränkungen mit Benutzerattributen
In diesem Tutorial lernen Sie, eine räumliche Einschränkung basierend auf dem Benutzernamen zu definieren. Sie werden eine räumliche Einschränkung für den Continents (1) Layer erstellen, die Inhalte basierend auf Ländern filtert, deren Namen mit dem gleichen Buchstaben beginnen wie der Benutzername.
Dieses Tutorial wurde für ArcGIS Enterprise 11.5 im Dezember 2025 getestet.
Voraussetzungen
Dieses Tutorial basiert auf dem Dynamische Objekteinschränkungen mit Benutzerattributen Tutorial. Die Voraussetzungen sind für beide dieselben. Sie können dieses Tutorial separat durchführen, bedenken Sie aber, dass Ihre Zugriffsrecht-Datei anders aussehen könnte.
-
security.manager NEXT ist installiert.
-
Sie können fünf Benutzerkonten verwenden:
-
Ein Administrator-Benutzerkonto zur Verwaltung von security.manager und Portal.
-
4 Nicht-Administrator-Benutzerkonten zum Testen des Zugriffs:
-
Alex ist in groupX
-
Bob ist in groupY
-
Charlie ist in sowohl groupX als auch groupY
-
Dana ist weder in groupX noch in groupY
-
-
-
Sie können den Service SampleWorldCities für dieses Tutorial verwenden. So können Sie den Zugriff auf den Service einschränken.
Eine dynamische räumliche Einschränkung hinzufügen
security.manager NEXT bietet räumliche Filter, die auf Benutzerattributen wie dem Benutzernamen basieren. Der einfachste Weg ist, eine räumliche Einschränkungs-Vorlage hinzuzufügen und dann die Abfrage zu modifizieren.
Sie können Vorlagen hinzufügen, indem Sie Ctrl+Space drücken. Diese Funktion zeigt verfügbare Beispiele, Beschreibungen und Code-Schnipsel an.
Eine räumliche Einschränkungs-Vorlage hinzufügen
Erstellen Sie zuerst eine räumliche Einschränkung ohne die Platzhalter zu ersetzen und referenzieren Sie sie zu einem neuen Fallback-Zugriffsrecht für Layer Continents (1).
-
Fügen Sie eine neue Zeile am Anfang des
restrictionsObjekts hinzu. -
Geben Sie
"country_username_filter":ein und wählen Sie Spatial restriction aus der Autocompletion-Liste. -
Erstellen Sie ein neues Fallback-Zugriffsrecht, indem Sie ein Komma und eine neue Zugriffsrecht-Vorlage am Ende des
fallbackPoliciesArrays hinzufügen.{ "fallbackPolicies": [{ "layers": [ "0" ], "restrictions": ["cities_only_names", "cities_username_filter"] },{ "layers": [ "1" ], "restrictions": ["country_username_filter"] }], "restrictions": { "country_username_filter": { "type": "spatial", "featuretypeurl": "https://myserver:6443/arcgis/rest/services/folder1/service1/FeatureServer/0", "featurequery": "state = 'California'" }, "cities_username_filter":{ "type": "feature", "query": "CITY_NAME LIKE UPPER(SUBSTRING('${user.username}', 1, 1)) || '%'" }, "cities_only_names":{ "type": "field", "allowedfields": [ "CITY_NAME" ] } } } -
Fügen Sie eine
1zum leeren layers-String hinzu. -
Fügen Sie ein
restrictionsArray hinzu und referenzieren Sie die neue räumliche Einschränkung.
Jetzt haben Sie eine räumliche Einschränkung für ein Fallback-Zugriffsrecht erstellt. Ihr Zugriffsrecht sieht so aus:
{
"fallbackPolicies": [{
"layers": [
"0"
],
"restrictions": ["cities_only_names", "cities_username_filter"]
},{
"layers": [
""
]
}],
"restrictions": {
"country_username_filter": {
"type": "spatial",
"featuretypeurl": "https://myserver:6443/arcgis/rest/services/folder1/service1/FeatureServer/0",
"featurequery": "state = 'California'"
},
"cities_username_filter":{
"type": "feature",
"query": "CITY_NAME LIKE UPPER(SUBSTRING('${user.username}', 1, 1)) || '%'"
},
"cities_only_names":{
"type": "field",
"allowedfields": [
"CITY_NAME"
]
}
}
}
Die Abfrage anpassen
Bisher wurden nur Platzhalter für die räumliche Einschränkung verwendet. Ersetzen Sie sie nun mit den gewünschten Werten.
-
Ersetzen Sie den Wert der
featuretypeurlEigenschaft mit https://services.conterra.de/server/rest/services/security_demos/World_Countries/FeatureServer/0. -
Ersetzen Sie den Wert der
featurequeryEigenschaft mit"NAME LIKE UPPER(SUBSTRING('${user.username}', 1, 1)) || '%'".Diese SQL-Abfrage ist ähnlich der SQL-Abfrage des vorherigen Tutorials.
-
Definieren Sie, dass die
imageoperationEigenschaft dieser Einschränkung aufarcgis-clippinggesetzt ist. -
Klicken Sie Änderungen speichern und neu starten.
Das vollständige Zugriffsrecht sollte nun so aussehen:
{
"fallbackPolicies": [{
"layers": [
"0"
],
"restrictions": ["cities_only_names", "cities_username_filter"]
},{
"layers": [
"1"
],
"restrictions": ["country_username_filter"]
}],
"restrictions": {
"country_username_filter": {
"type": "spatial",
"featuretypeurl": "https://services.conterra.de/server/rest/services/security_demos/World_Countries/FeatureServer/0",
"featurequery": "NAME LIKE UPPER(SUBSTRING('${user.username}', 1, 1)) || '%'",
"imageoperation": "arcgis-clipping"
},
"cities_username_filter":{
"type": "feature",
"query": "CITY_NAME LIKE UPPER(SUBSTRING('${user.username}', 1, 1)) || '%'"
},
"cities_only_names":{
"type": "field",
"allowedfields": [
"CITY_NAME"
]
}
}
}
Sie haben eine Abfrage definiert, die den Continents (1) Layer nach Ländern filtert, deren Namen mit dem gleichen Buchstaben beginnen wie der Name des Benutzers.
Falls ein Benutzer mit dem Benutzernamen sasha diesen Layer des SampleWorldCities Service anfordert, ist die SQL-Abfrage der featurequery NAME LIKE UPPER(SUBSTRING('sasha', 1, 1)) || '%'.
Diese Abfrage löst sich zu NAME LIKE 'S%' auf.
Der Benutzer erhält jene Teile des Continents (1) Layers, die sich in Ländern befinden, die mit S beginnen, wie Saudi Arabia, Sweden oder South Korea.
Diese Teile werden wie mit einem Plätzchenausstecher ausgeschnitten.
Konfiguration überprüfen
Um die vorherige Konfiguration zu überprüfen, greifen Sie mit allen vier Benutzern auf den SampleWorldCities Service zu.
-
Öffnen Sie einen privaten Browser.
-
Gehen Sie zum ArcGIS REST Services Directory und melden Sie sich als Benutzer Alex an.
-
Navigieren Sie zu den Service-Metadaten des SampleWorldCities Service.
-
Klicken Sie auf View in: ArcGIS JavaScript.
-
Sie sehen alle Städte, deren Namen mit einem A beginnen.
-
Sie sehen alle Teile des Continents Layers, die sich innerhalb von Ländern befinden, die mit A beginnen, wie Argentina, Australia oder Afghanistan.
Wiederholen Sie die Schritte mit den anderen Benutzern, um zu überprüfen, dass der Continents Layer korrekt gefiltert wird.
-
Bob sieht den Continents-Layer in Ländern, die mit B beginnen, wie Bangladesh, Bolivia oder Botswana.
-
Charlie sieht den Continents-Layer in Ländern, die mit C beginnen, wie Canada, Cambodia oder China.
-
Dana sieht den Continents-Layer in Ländern, die mit D beginnen, wie Denmark oder Dominica.
Zusammenfassung
Sie haben gelernt, eine räumliche Einschränkung zu erstellen, die Zugriff auf Objekte basierend auf dem Benutzernamen gewährt. Sie haben eine Einschränkung erstellt, die den Continents Layer räumlich auf jene Länder filtert, deren Namen mit dem ersten Buchstaben des Benutzernamens übereinstimmen.
Sie haben nun alle Tutorials zum Erstellen von Zugriffsrechten abgeschlossen. Sie können mit dem Automatisierung & CI/CD Tutorial fortfahren, um mehr über Continuous Integration/Continuous Delivery (CI/CD) zu lernen.