Domanda

Il mio amico ed io stiamo scrivendo un C # IRC Bot che permetterà agli utenti di estendere le sue capacità attraverso i plugin. Ne abbiamo bisogno in modo che ogni comando sarà in grado di avere i propri permessi. In modo che solo un utente su uno specifico livello o al di sopra potrebbe eseguire il comando. Abbiamo avuto un momento difficile decidere come fare questo.

Il sistema di autorizzazioni sarebbe 1-10. 1 è la meno privilegiato e 10 è il più. Ogni utente dovrebbe essere assegnato un permesso 1-10. Ogni comando potrebbe anche assegnare per sé un livello di autorizzazione richiesto. La mia domanda è essenzialmente:. Come potrei fare un sistema di autorizzazione per-comando con i plugin di essere in grado di avere più comandi al loro interno

speravo la buona gente di Stack Overflow mi potrebbe aiutare. Si prega di portare con me in quanto questa è la prima domanda che ho chiesto qui. Qualsiasi aiuto sarà molto apprezzato! Grazie!

È stato utile?

Soluzione

che avrebbe sicuramente lavorare, un altro modo è il concetto di 'capacità'. ogni utente ha un elenco di funzionalità come 'update-utente', 'delete-utente', 'download-file', ecc La lista è illimitata. è possibile concedere le capacità degli utenti e ogni funzione può controllare con l'elenco richiesto di cui ha bisogno

if (! CheckCaps ( 'shell-cmd', 'google', 'open-url')) sendError ( 'Siamo spiacenti, n permanenti')

i ruoli possono essere definiti quali aggregare un insieme di autorizzazioni, come 'ospite', 'utente', 'manager', 'admin' etc.

Altri suggerimenti

Vorrei creare una propria implementazione di IPrincipal che restituire i valori di 1-10 per i ruoli che rappresentano il livello di autorizzazione l'utente ha. È quindi assegna questo come l'autorizzazione principale quando si autentica l'utente.

Poi, è una questione di applicare l'attributo PrincipalPermission su tutti i metodi (che significa i vostri metodi di plugin, e altri) per permettere alle persone nel ruolo appropriato per eseguire il codice unico.

Per esempio, se ho livello cinque, allora sono assegnati ruoli 1, 2, 3, 4, 5.

Si può avere un metodo ha un attributo PrincpalPermission in cui la proprietà Role è impostato su 6, che non avrei accesso e un altro metodo che ha un attributo PrincipalPermission con la proprietà Role impostato su 3, che lo farei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top