библиотеки аутентификации пользователя для node.js?

Есть ли какие-либо существующие библиотеки аутентификации пользователя для node.js? В особенности я ищу что-то, что может сделать аутентификацию по паролю для пользователя (использующий пользовательского автора бэкенда DB), и партнер что пользователь с сессией.

Прежде чем я записал подлинную библиотеку, я полагал, что буду видеть, знали ли люди о существующих библиотеках. Ничто не мог найти очевидным через поиск Google.

- Shreyas

272
задан shreddd 16 August 2010 в 11:44
поделиться

2 ответа

Похоже, плагин connect-auth для промежуточного ПО подключения - это именно то, что мне нужно: http://wiki.github.com/ciaranj/connect-auth/creating-a- стратегия на основе форм

Я использую express [ http://expressjs.com ], поэтому подключаемый модуль подключения очень хорошо подходит, поскольку express является подклассом (хорошо - прототипом) из connect

26
ответ дан 23 November 2019 в 02:16
поделиться

Вот код для базовой аутентификации из одного из моих проектов. Я использую его против CouchDB с дополнительным кешем данных аутентификации, но я удалил этот код.

Оберните метод аутентификации вокруг обработки запроса и предоставьте второй обратный вызов для неудачной аутентификации. Обратный вызов успеха получит имя пользователя в качестве дополнительного параметра. Не забудьте правильно обрабатывать запросы с неправильными или отсутствующими учетными данными в обратном вызове ошибки:

/**
 * Authenticate a request against this authentication instance.
 * 
 * @param request
 * @param failureCallback
 * @param successCallback
 * @return
 */
Auth.prototype.authenticate = function(request, failureCallback, successCallback)
{
    var requestUsername = "";
    var requestPassword = "";
    if (!request.headers['authorization'])
    {
        failureCallback();
    }
    else
    {
        var auth = this._decodeBase64(request.headers['authorization']);
        if (auth)
        {
            requestUsername = auth.username;
            requestPassword = auth.password;
        }
        else
        {
            failureCallback();
        }
    }


    //TODO: Query your database (don't forget to do so async)


    db.query( function(result)
    {
        if (result.username == requestUsername && result.password == requestPassword)
        {
            successCallback(requestUsername);
        }
        else
        {
            failureCallback();
        }
    });

};


/**
 * Internal method for extracting username and password out of a Basic
 * Authentication header field.
 * 
 * @param headerValue
 * @return
 */
Auth.prototype._decodeBase64 = function(headerValue)
{
    var value;
    if (value = headerValue.match("^Basic\\s([A-Za-z0-9+/=]+)$"))
    {
        var auth = (new Buffer(value[1] || "", "base64")).toString("ascii");
        return {
            username : auth.slice(0, auth.indexOf(':')),
            password : auth.slice(auth.indexOf(':') + 1, auth.length)
        };
    }
    else
    {
        return null;
    }

};
7
ответ дан 23 November 2019 в 02:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: