Problema con web script di login

cancel
Showing results for 
Search instead for 
Did you mean: 
monocromo
Member II

Problema con web script di login

Ciao a tutti, ho il seguente problema:
Sto tentando di utilizzare il web script di login messo a disposizione da Alfresco per ottenere il ticket e richiamare ulteriori web script.

La chiamata per ottenere il ticket la sto facendo da una pagina html con una chiamata ajax sfruttando jquery ma senza esito. Il problema è che la chiamata va sempre in request.fail e io non riesco ad ottenere il ticket. Provando direttamente dall'url del browser funziona tutto correttamente e vedo l'xml con il ticket. Cosa sto sbagliando? Sul log di Alfresco non si presentano errori. L'unica cosa che leggo è che dal debug di firefox sulla console nel tab XML vedo il seguente messaggio: Errore interpretazione XML: nessun elemento trovato Indirizzo: moz-nullprincipal:{3220e00b-2953-4555-8824-a9e0fcdc5b23} Riga numero 1, colonna 1:

Ecco il codice:

<javascript>
      function prova()
      {
         //var login = '{"username":"Marcello","password":"Marcello"}';         
         
         var request = $.ajax({
            url: "http://192.168.1.7:8080/alfresco/service/api/login",
            type: "GET",
            data:  "u=Marcello&pw=Marcello",
            dataType: "xml"
            });
            request.done(function(result)
            {
                var xml = $.parseXML(result);
            });
            request.fail(function(jqXHR,textStatus)
            {
               alert("Request failed: " + textStatus);
            });
      }
<javascript>
8 Replies
davidciamberlan
Alfresco Employee

Re: Problema con web script di login

Ciao,

probabilmente è un problema di cross-domain request.

Prova ad inserire la pagina che contiene il tuo script nello stesso dominio+porta in cui è Alfresco e la chiamata dovrebbe andare a buon fine.

In alternativa puoi usare JSONP. Devi però utilizzare una richiesta POST e un content type json per il webscript alfresco/service/api/login, come puoi leggere nel wiki.

monocromo
Member II

Re: Problema con web script di login

Ciao, il problema permane e non cambia. In realtà voglio utilizzare il web script di autenticazione per sfruttare un altro web script che ho scritto io e che mi restituisce i metadati di un file che utilizza un custom content model. Putroppo non riesco ad utilizzare il web script che mi sono scritto senza autenticazione. Nel descrittore del mio web-script ho inserito <authentication>none</authentication> ma putroppo quando tento di utilizzarlo il log di alfresco mi comunica che sto tentando di fare un'operazione con un livello di autenticazione non consentito.

Il mio obiettivo è quello di scrivere una pagina in php che mi riporta un elenco di file con i loro metadati in base al tipo di documento scelto. In realtà mi importa molto poco che io vada ad utilizzare l'autenticazione o meno soprattutto perchè l'installazione di alfresco è su di una lan locale.
davidciamberlan
Alfresco Employee

Re: Problema con web script di login

Ciao,

potresti usare direttamente le librerie php invece di ajax per fare la richiesta.

Esiste anche un php sdk (non ufficiale e non so quanto aggiornato) che potrebbe renderti lo sviluppo più semplice.

Se invece vuoi utilizzare ajax… mi sembra strano che non riesca ad ottenere il ticket dalla api di login ufficiale.

Ho provato copiando il tuo script e funziona correttamente.
L'ho fatto partire da una cartella all'interno del webapp del tomcat di alfresco e ho modificato l'URL della chiamata ajax mettendo il nome dell'host al posto dell'IP (nel mio caso ho fatto la prova sul mio PC quindi ho messo localhost ma se sei in rete va bene il nome host con cui chiami alfresco… evita l'ip).

PS: se lavori con javascript ti conviene utilizzare una chiamata POST in modo da ottenere il ticket in formato json… mooolto più semplice da gestire dell'xml.
davidciamberlan
Alfresco Employee

Re: Problema con web script di login

Un'aggiunta…

se utilizzi none come livello di autenticazione dei webscript non potrai vedere niente nel repository. Questo perchè di fatto non vieni autenticato in Alfresco. Dovresti usare none solo per i webscript che non devono interagire con il repository.
monocromo
Member II

Re: Problema con web script di login

Le librerie php ho provato ad usarle ma sono incomplete e non più aggiornate da almeno un paio di anni.
Io l'ho script l'ho eseguito da una macchina virtuale con un web server apache ma putroppo mi genera sempre questo odiosissimo errore:
Errore interpretazione XML: nessun elemento trovato Indirizzo: moz-nullprincipal:{b977759b-b932-4b91-8d5e-872590745e9e} Riga numero 1, colonna 1:

a cui non so cosa sia attribuibile perchè la chiamata va a buon fine e la stringa sotto è la risposta che vedo nel firebug!
GET http://192.168.1.7:8080/alfresco/service/api/login?u=Marcello&pw=Marcello 200 OK 55ms
monocromo
Member II

Re: Problema con web script di login

Buono a sapersi questo. E' veramente curioso il comportamento che sto avendo, probabilmente sto sbagliando qualcosa!
davidciamberlan
Alfresco Employee

Re: Problema con web script di login

Ciao,

anche se non utilizzi le vecchie librerie alfresco-php, puoi sempre usare direttamente la funzione php CURL per fare la chiamata al webscript di Alfresco e recuperare il ticket.

Riguardo ajax, l'errore dovrebbe essere generato perchè nella risposta http non viene restituito alcun xml.
Se ho ragione nel tab "Risposta" di firebug non dovresti trovare nulla mentre se tutto funzionasse correttamente avresti l'xml con il ticket (prova a mettere l'url che hai postato direttamente nel browser e vedrai che funziona).
Il fatto che il server risponda con codice 200 non è in questo caso significativo.

Questo mi riporta a pensare che sia un problema di cross-domain-request… sei sicuro che la tua pagina html (o php) sia sullo stesso appserver di Alfresco (tomcat suppongo)? Prova poi a non utilizzare l'IP nell'url ma il nome host del server di Alfresco.
(scusa se insisto ma smentiscimi pure se sbaglio).
monocromo
Member II

Re: Problema con web script di login

Ok, ha ragione David, le chiamate cross-domain con ajax non funzionano. Portando tutto il codice sorgente delle mie pagine nel webapps del tomcat ho risolto i problemi. Sono riuscito ad ottenere il ticket ed utilizzare correttamente il mio web script. Che fatica però!