Autentica utente Joomla da un'app esterna basata su Node.js, Javascript e MongoDB

2

Ho un'app per iOS che attualmente richiama tutti i dati da MongoDB usando un server Node.js. Attualmente la mia API / il mio server nodo gestisce tutta la manipolazione dei dati l'app iOS / Swift visualizza solo i dati all'interno dell'app. Il mio server esegue tutte le funzioni sui dati restituiti da MongoDb.

Ho un sito web Joomla in cui tutti i miei utenti sono registrati e hanno il loro nome utente e password.

La mia app ha una schermata di login, dove ci sono i campi username e password. Voglio che l'utente inserisca i suoi dati di accesso a Joomla (cioè nome utente e password). E solo e solo se sono registrati sul mio sito Joomla potranno accedere alla mia App e visualizzare i dati che vengono estratti da MongoDB.

Attualmente la mia intera app esegue JavaScript, NESSUN PHP!

C'è un modo in cui posso autenticare gli utenti dalla mia app iOS?

    
posta Lorenzo von Matterhorn 12.08.2015 - 16:00
fonte

1 risposta

1

Assicurati che la tua password hash Joomla sia nella tua Mongo Db; dalla tua app Joomla hai bisogno di una chiamata per fare quel lavoro. In php un lavoro di arricciatura può fare quel lavoro.

Joomla usa bcrypt per cancellarne le password, quindi è necessario un pacchetto di nodi. Ce ne sono diversi e sono riuscito solo con bcryptjs;

Ora devi rendere il meccanismo di autenticazione nell'app Node che controlla il db. Questa è Mongoose che parla con Mongo. Mostrerò lo snippet dove bcrypt effettua il confronto.

function authenticate(req, res, next)
{
var body = req.body;

User.find({username: body.username}, function (err, theuser)
{
    if (theuser.length == 1)
    {
        bcrypt.compare(body.password, theuser[0].password, function (err, ismatch)
        {
            if(ismatch)
            {
                user = {joomlaid:theuser[0].joomlaid,username:theuser[0].username, name:theuser[0].name, useremail:theuser[0].useremail};
                console.log('found user: ' + JSON.stringify(user));
                next();
            }
            else
            {
                console.log("user found but no matching passwords" + ismatch);
                res.status(401).end('Password incorrect');
            }
        })
    }
    else
    {
        console.log('no user found... ' + JSON.stringify(user));
        res.status(401).end('Username or password incorrect');
    }
});

Nella lotta per rendere questo ho fatto uso di un bcrypt (de) coder online

    
risposta data 21.03.2017 - 12:56
fonte

Leggi altre domande sui tag