2011-10-26 17 views
7

Quindi Apex dispone di "spazi di lavoro", che consentono di creare utenti di tre tipi, ognuno dei quali è interno all'organizzazione in natura. Inoltre, sembra che non ci sia alcun modo per uno sviluppatore di un singolo sito su Apex di avere "utenti" solo per il suo sito.Autorizzazione e ruoli utente in Oracle Apex?

mi sto perdendo qualcosa?

Devo essere in grado di avere utenti esterni (aziendali) per poter accedere a solo alcune funzionalità del sito, ad esempio, la contabilità può vedere solo le pagine A e B mentre i dirigenti possono vedere A, B, e C.

Ho bisogno di avere la possibilità di avere diversi gruppi di persone con gradi diversi di accesso.

Questo può essere fatto solo creando aree di lavoro/gruppi? Oppure può essere fatto internamente solo sul mio sito?

risposta

7

Sebbene APEX abbia un concetto di gestione utenti definito "Gruppi", devo confessare che non l'ho mai usato, e una rapida lettura della documentazione non mi rende chiaro come li usi per controllare l'accesso (ma vedi Tom's answer qui per quello).

Probabilmente sarà necessario creare tabelle utente/ruolo all'interno del database e utilizzarle in combinazione con gli schemi di autorizzazione APEX per controllare l'accesso alle pagine. Un regime unico di autorizzazione di tipo "funzione PL/SQL ritorno booleano" potrebbe essere creato con il corpo della funzione:

return my_auth_pkg.is_authorized (p_user => :app_user, 
            p_app_id => :app_id 
            p_page_id => :app_page_id); 

Si potrebbe quindi implementare il pacchetto per cercare i privilegi dell'utente e decidere se restituire true o false per l'ID dell'applicazione e della pagina. enter image description here

In alternativa si può solo eseguire l'SQL per verificare l'accesso direttamente nel regime di autorizzazione: enter image description here

(NB "user_roles" e "role_pages" sono nomi che ho fatto fino, per rappresentare tuoi tabelle)

+0

Dove esattamente andrebbe il codice sopra elencato? – antonpug

+0

Inseritelo nella proprietà "Corpo funzione" dello schema di autorizzazione APEX al momento della sua creazione. –

+0

Ah bene. Quindi è anche dove vorrei creare i controlli per vedere se la mia tabella db contiene le informazioni corrette o no? – antonpug

6

Desidero solo espandere Tony's answer, che di per sé è corretto. Voglio solo mostrarti un altro modo, che penso sarebbe più facile per un principiante assoluto e omette la creazione di tabelle.

Se l'applicazione utilizza Apex come schema di autenticazione, gli utenti vengono gestiti tramite l'amministrazione dell'area di lavoro stessa. È possibile creare, modificare ed eliminare utenti, ma è anche possibile definire gruppi e collegare gli utenti ai gruppi. È possibile creare diversi tipi di utenti "utente finale" e definire un paio di gruppi, ad esempio "Dirigenti".

Apex users and groups Creation of a group Dopo aver creato il vostro gruppo, andate per l'utente che si desidera assegnare questo gruppo per, e aggiungere il gruppo ai gruppi di quell'utente

Adding a group to a user

Una volta che avete istituito, hai ancora bisogno degli schemi di autorizzazione. Resta il fatto che hai bisogno di qualche conoscenza di pl/sql qui, ma è possibile mantenere la codifica al minimo, grazie ad alcune pratiche API. Defining an authorization based on apex groups Il current_user_in_group fa ciò che dice: controlla l'utente corrente se ha detto il gruppo assegnato. Con un po 'di espansione usando alcune semplici strutture IF, puoi aumentare un po'!

Non che io consiglierei assolutamente questo metodo, lo trovo un po 'noioso, e avete bisogno di qualcuno che entri in APEX per mantenere effettivamente gli utenti e i loro gruppi, ma potrebbe benissimo essere accettabile nel vostro ambiente . Potresti usarlo per iniziare con comunque. È possibile modificare facilmente gli schemi di autenticazione e, modificando gli schemi di autorizzazione in modo che siano conformi al nuovo schema di autenticazione, è possibile regolarli facilmente e rapidamente in seguito. Dipende dalle tue priorità e obiettivi, naturalmente.

+1

+1 Grande, ora so come usare i gruppi integrati! Avevo guardato i documenti apex_util prima di rispondere, ma non sono riuscito a vedere quella funzione. Solo un'osservazione: il tuo codice nell'espressione 1 può essere ridotto a semplicemente; 'return apex_util.current_user_in_group (p_group_name => 'Executives');' –

+0

Ho implementato la tua risposta qui Tom, ed è sicuramente efficace nel limitare l'accesso. In effetti, non riesco più ad accedere alla pagina di accesso. XD Come potrei risolverlo? Devo notare che ho applicato lo schema di autorizzazione a livello di app, non a livello di pagina. Devo disattivare l'autorizzazione a livello di app e veramente passare e limitare l'accesso a ciascuna pagina individualmente? – TraxusIV

+1

@TraxusIV Wow, scusa per la risposta tardiva! Penso che questo potrebbe essere legato alla tua versione di apice, e le versioni successive di apice non dovrebbero più farlo (credo). Potrebbe essere dal 4.2 in su. Oltre a questo, sì, dovrai assegnarlo direttamente. Non preoccuparti però, puoi farlo in modo relativamente semplice andando su Utilità> seleziona Utilità cross-page nella barra laterale destra> modifica griglia di tutte le pagine. Puoi modificare lo schema di autorizzazione lì, facilmente, per tutte le tue pagine. Non dimenticare di salvare! :) – Tom

0

L'autorizzazione è un processo per determinare se una persona autenticata/identificata è autorizzata ad accedere a una risorsa o eseguire un'operazione. Si basa su set di privilegi o ruoli assegnati all'utente. Ad esempio, nel database Oracle, l'amministratore ha il privilegio di pianificare i lavori, mentre un utente non può. In che modo l'autorizzazione è diversa dall'autenticazione? Spesso Autenticazione e Autorizzazione funzionano insieme. In altre parole, l'autorizzazione segue l'autenticazione. L'autenticazione determina chi sei? L'autorizzazione determina cosa è permesso fare?

Problemi correlati