Ziel: zwei Benutzer root und Benutzer. Root kann über die Weboberfläche auf alles zugreifen, aber der Benutzer sollte nur einige Teile der Menüs sehen.OpenWrt: LuCI: wie begrenzten Benutzerzugriff zu implementieren
Eine Option wäre, die Option "sysauth" an jedes Modul zu übergeben. Das ist nicht sehr praktisch, weil der Benutzer jeden Menüeintrag sehen würde und die Anmeldeseite für jedes Menü erhalten würde, das er nicht benutzen darf.
Meine Idee ist herauszufinden, wer angemeldet ist und dann nichts in der Funktion index() jedes eingeschränkten Moduls tun. Bisher konnte ich eine solche Funktion in LuCI API (http://luci.subsignal.org/api/luci/) nicht finden, die einen aktuell angemeldeten Benutzer zurückgeben würde.
Ich weiß, wie Sie zusätzliche Benutzer in OpenWrt/LuCI hinzufügen (https://forum.openwrt.org/viewtopic.php?pid=163013#p163013). Aber es ist nur ein Teil der Lösung.
Irgendeine Idee, wie man mein Ziel erreicht?
Dank für Ihre Aktie Lösung. Ich habe eine einfache Frage: Ich weiß nicht, die remove_idx in welche Datei schreiben? fügen Sie "user check" nach der Funktion dispatch() oder im Versand() 'modifi dispatch()' hinzu. und wo verwende ich "nicht benötigte Seiten entfernen" -Code? Ich bin verwirrt. Entschuldigung für mein schlechtes Englisch. – omid
Ich habe 'remove_idx' Funktion und Benutzerprüfung hinzugefügt, aber nur Element im Menü löschen erste Seite rendern, wenn neu laden oder auf andere Seite gehen,' LEDs' und 'Pakete' gehen zurück und im Menü verfügbar. kann ich schlecht verwenden Benutzercode überprüfen, können Sie mir bitte helfen? – omid
Sowohl 'remove_idx()' als auch die Authentifizierungsüberprüfung müssen sich in der Datei 'libs/web/luasrc/dispatcher.lua' befinden, da die gesamte Indexstruktur erstellt wird, sobald Sie die Router-Webschnittstelle öffnen. Die Überprüfung der Benutzerauthentifizierung muss in der 'dispatch()' Routine erfolgen, direkt nach dem Code, den ich in meiner Antwort gezeigt habe. Dies ist die Routine, bei der der Indexbaum gefüllt wird. – yegorich