Auf Leaflet basierende Webseite mit User-Login - wer kennt welche?

Hi,

Ich bin dabei, die Boundaries Map 5.x (Boundaries Map NG ;)) von OpenLayers auf Leaflet umzustellen.

Dabei möchte ich auch ein Login mit allem Schnicknack einbauen. Also Login-Feld mit Userid/Password, Mail-Adresse, Recovery für vergessene Userids/Passwörter, Abspeichern der Userdaten (Credentials) auf dem Server, usw.

Irgendwie finde ich den Einstieg nicht.

Kann mir jemand Beispielseiten nennen, wo man etwas "spicken"kann? Am liebsten mit Jquery als JS-Libary aber ich will net zu anspruchsvoll sein. Oder auch Node.js, damit ich diesen “neumodischen Kram” auch mal kennen lerne :wink:

Gruss
walter

Redest du jetzt rein vom Frontend (jQuery) und/oder vom Backend (node.js)?

Nachtrag: letztendlich kannst auch erst ganz normale Formulare basteln und deren Aktionen erst mal zum Server schicken. Das Frontend kannst du dann per jQuery immer noch auf ajax Calls etc umbauen.

PS: ich kenne ein paar Seiten mit leaflet, aber leider alle mit OAuth Login…

Nö, ich meinte schon den Frontend. Mein Backend ist in Java (“richtiges” Java) geschrieben und verwendet Eclipse Jetty (Servlets).

Klaro, jQuery und Ajax verwende ich natürlich auch - nur noch keine Formulare. 1-2 Beispiele würden mir die Sache etwas leichter machen.

Macht meine aktuelle Seite auch, aber irgendwie bin ich nicht glücklich damit. Muss ich nochmals drüber nachdenken.

Kannst mir ruhig mal welche nennen.

Ich versuche doch mal das, was ich hier im Forum eigentlich jeden frage: Wo ist das Problem? Und was willst du eigentlich erreichen?

  • Ich sehe im Log, dass manche User stundenland nur im linken Tree Grenzen auswählen und diese werden dann auf der Karte angezeigt - mehr nicht. Ich habe keine Ahnung, was die da eigentlich machen. Einen Export machen die jedenfalls nie. Läuft da ein Bot? Ein Scraper? Machen die Screenshots? ???
    Daher will ich ein “Login” für alle User verpflichtend machen und nicht wie bisher nur für die “Kunden”, die wirklich exportieren. Dann “weiss” mein Server immer, welcher User das ist und wie man ihn erreichen kann.

  • Ich bekomme zunehmend Anfragen per Mail, die ich dann in einem direkten Mail-Dialog kläre. Das würde ich gerne auf ein kleines Forum übergeben, wo sich auch User mit Usern “unterhalten” können. Dazu brauch ich natürlich ein OpenSource-Forum, das die gleiche Authentifizierung wie meine Karte verwendet.

Erreichen möchte ich, dass beides möglich ist, ohne dass man sich mehrfach registriert/anmeldet. (so wie bei OSM und diesem Forum).

Danke und Gruss
walter

uMap hat doch die OSM-Authentifizierung integriert und läuft mit Leaflet. Vielleicht bringt dir das was?

Jo, ich schau mal

Danke und Gruss
walter

Auch osmhydrant.de ist eine Seite mit leaflet und OAuth, aber eben ohne “normalen” Username/Password Login.

PS: ansonsten guck doch einfach mal in deiner joomla Installation nach der Loginlogik.

Zum Schluss ist doch einfach ein HTML Formular mit zwei inputs, die du so einfach als Post Request an deine JavaServlet schickst.

wenn das so “einfach” wäre.

Ein Ansatz von mir war, die gesamte Benutzerverwaltung mit Joomla zu machen, da dort ja alles drin ist (registrieren, einloggen, passwort recovery, statistiken, accounts sperren, …). Allerdings ist es mir nicht gelungen, vom Servlet aus die Joomla-Datenbank abzufragen. Sollte auf den 1. Blick ganz einfach sein, aber das Servlet kennt den User nicht und kann deshalb nicht bei Joomla nachsehen, wer das ist und was der darf.

naja, da gibt es einige Meinungen dazu, wie man das mit Servlets “richtiger” macht:

https://stackoverflow.com/questions/14686902/how-to-authenticate-users-using-servlet#14687052
und darin die Anworten von BatusC, in der so eine Lösung völlig zerissen wird (“Don’t homegrow authentication. Delete all that bad, inefficient and resource-leaking code and use container managed authentication.”) :wink:

Danke an alle,
ich hab jetzt genug Futter, das ich erst mal verdauen muss.

Gruss
walter

Jo, stimmt, wenn du das Servlet direkt aufrufst ja … dazu bräuchtest du wohl einen Joomla-Servlet-Wrapper, d.h. sämtliche Anfragen laufen zunächst einmal über Joomla, welches dann mit diesem Wrapper entscheiden müsste, ob der Request für Joomla oder für deine Servlets gedacht ist, und dann könntest du ja den user uns sonstige Metadaten mit an dein Servlet geben.

PS: Das andere war eher salopp gemeint, “homebrew” sollte man sowas wirklich nicht mehr programmieren, sondern wie von BatusC angesprochen entsprechende authenti(fi)cation features des jeweiligen Systems genutzt.

Soweit war ich ja schon. Konnte ein Java Servlet aufrufen, das Daten aus der Joomla-DB abfragen konnte. Bin dann aber net weitergekommen.
Nun, jetzt sind mehrere Monate ins Land gezogen und ich werde es wohl nochmals versuchen. Die Testprogramme sind ja immer noch vorhanden. (*)

Ich empfand das schon als heftig. Zudem ebnet mir sein konkreter Vorschlag eventuell den Lösungsweg.

Gruss
walter

*) nachdem ich diesen Satz geschrieben hatte, hab ich mich mal auf die Suche gemacht. Und: nach ca 30 Minuten hab ich das blöde Teil in den unendlichen Weiten meiner Festplatten gefunden :wink:

find /data/backup/server2 -name “*.java” -exec grep -il mysql ‘{}’ ;
/data/backup/server2/home/wambacher/osm/maven/common/src/main/java/com/wno/getUserFromJoomla.java

Ich würde ja den Weg gehen, nach einer JavaScript-API für JOOMLA zu suchen (oberflächliches googleln fand was kommerzielles), und die dann von meiner Leaflet-Seite aus über AJAX ansprechen.

Ja, in die Richtung wird es wohl gehen. Userverwaltung mit Joomla und dann “irgendwie” vom Servlet drauf zugreifen. Muss mich letztes Jahr in einer Sackgasse befunden haben, jetzt sehe ich einen Weg.

Danke und Gruss
walter

Neulich in der 7a an der Linux-Torvalds-Realschule, 3. Stunde Erdkunde :"So, alle starten jetzt ihre Rechner…nun füllt ihr das Arbeitsblatt… ich habe da eine Seite gefunden … nein Chantal, du gehst jetzt nicht aufs Klo…bitte keine Downloads versuchen, die Firewall lässt eh nix durch… so, und die Orte vom Nachbarlandkreis sind die Hausaufgabe, Flächen diesmal bitte quer gestrichelt… und die Legende nicht vergessen!.. Was, Chantal, jetzt musst du nicht mehr aufs Klo?.. Guten Morgen 7B,… die Rechner sind ja schon an…

Nette Theorie. Nur passt es nicht dazu, dass manche User mitten in der Nacht (passend zu ihrem Standort) stundenlang - also mehr als 45-60 Minuten am Stück - dieses Spielchen treiben.

Zudem ginge ein “Ausmalen” der Resultate wesentlich einfacher, wenn man sich die SVG herunterladen würde - aber einen Export macht da keiner.

Gruss
walter

hmm, ich tippe auch auf bot / scraper … du lieferst ja bereits per request ein valides geojson objekt aus, wenn man etwas markiert, warum dann also noch den expliziten download? :wink:

PS: ob es ein bot oder wirklich ein user ist bekommst du per einbinden einer click heatmap api heraus, welche zu jedem click auch die entsprechende mauszeigerposition per ajax an ein backendscript sendet. bei einem (schlecht gemachten) bot sollte es entweder gar keine heatmap geben oder nur an einer stelle, bei einem user jedoch sollte dann fast der komplette linke bereich rot sein.

Jo, da könnte was dran sein. “Theoretisch” erfolgt der Call ja von der BM-Webseite aus und nachdem das Ergebnis (die Geometrie) per Servlet aus der DB kommt, rendert OpenLayers die entsprechenden Polygone.

In der neuen Version mit Leaflet passiert derzeit fast das Gleiche, nur dass hier noch der GeoServer mit beteiligt ist.
Das Rendern erfolgt aber immer noch in Leaflet.

Ok, wenn ich dem GeoServer “sage”, dass er keine Features (Geometrieen) ausliefern soll, sondern fertig gerenderte Tiles, sollte das mMn nicht mehr möglich sein. Dafür muß ich aber auf Funtionalitäten wie Hover verzichten :frowning:

Interessanter Ansatz. Werde ich mal verfolgen. Wahrscheinlich bevor ich irgendwas ändere, damit ich deine Theorie bestätigt sehen kann.

Danke und Gruss
walter

Oder neben der zwangsweisen Loginvariante (die du ja zukünftig planst) ganz brutal als Einstiegsseite (also bei einer neuer Session) einfach eines dieser schönen Captchas (I’m not a robot) anzeigen und bestätigen lassen, so als anonyme Loginvariante (vielleicht mit kurzem Hinweis für die Menschen)… ich glaube einem Menschen, der wirklich etwas von deiner Seite möchte, macht diesen einen Klick gerne.

Jo, wenn das mit der Authentifizierung erstmal läuft, hab ich ja viele Möglichkeiten.

Ich baue jetzt mal einen einfachen Click-Logger ein, nur um zu sehen, ob du recht hast.

Ansonsten ist das eh schwierig, in einer ja frei lesbaren Javascript-Seite solche Click-Abfragen “unsichtbar” einzubauen. Das hat ein kleverer Scraper schnell raus und gaukelt mir das auch vor.

Gruss
walter

Hi,

ich hab mal die Logs der Boundaries Maps-Website systematisch analysiert und kann keine “komischen” Zugriffe mehr erkennen.

Die mir seltsam vorkommenden Zugriffe stammen nicht von Bots oder Scrapern, die versuchen, Daten unter Umgehung der Export-Funktionalität herunterladen, sondern schlicht daher, dass jemand die angezeigte Karte verschiebt oder hinein-/hinauszoomt.

Daher brauche ich das Verfahren, wie die Geometrien gerendert werden, derzeit wohl nicht umzustellen :slight_smile:

Danke und Gruss
walter

ps: Authentifizierung und Autorisierung werde ich allerdings wie geplant umstellen.