Obiettivo: due utenti root e utente. Root può accedere a tutto tramite l'interfaccia web, ma l'utente dovrebbe vedere solo alcune parti dei menu.OpenWrt: LuCI: come implementare l'accesso utente limitato
Un'opzione sarebbe quella di passare l'opzione "sysauth" a ogni modulo in questione. Questo non è molto pratico, perché l'utente vedrebbe ogni voce di menu e otterrebbe la pagina di accesso per ogni menu a cui non è permesso.
La mia idea è di capire chi è connesso e quindi non fare nulla nella funzione index() di ogni modulo limitato. Finora non sono riuscito a trovare una tale funzione nell'API di LuCI (http://luci.subsignal.org/api/luci/), che restituirebbe un utente registrato corrente.
So come aggiungere altri utenti in OpenWrt/LuCI (https://forum.openwrt.org/viewtopic.php?pid=163013#p163013). Ma è solo una parte della soluzione.
Qualche idea, come raggiungere il mio obiettivo?
grazie per la condivisione la vostra soluzione. Ho una semplice domanda: non conosco la scrittura remove_idx su quale file? aggiungi "controllo utente" dopo la funzione dispatch() o in dispatch() 'modifi dispatch()'. e dove uso il codice "rimuovi le pagine non necessarie"? Sono confuso. scusa per il mio cattivo inglese. – omid
ho aggiunto la funzione 'remove_idx' e il controllo utente, ma rimuovo solo l'elemento nel rendering della prima pagina del menu, se si ricarica o si passa ad un'altra pagina, la voce' leds' e 'packages' torna indietro e disponibile nel menu. potrebbe essere un cattivo uso controllare il codice utente, puoi aiutarmi per favore? – omid
Sia 'remove_idx()' che il controllo di autenticazione deve essere nel file 'libs/web/luasrc/dispatcher.lua', perché l'intero albero dell'indice viene creato non appena si apre l'interfaccia web dei router. Il controllo dell'autenticazione utente deve essere nella routine 'dispatch()', subito dopo il codice che ho mostrato nella mia risposta. Questa è la routine, in cui verrà riempito l'albero dell'indice. – yegorich