[Authentication] كيفية تنفيذ auth تسجيل الدخول في node.js


Answers

في الواقع هذا ليس في الحقيقة إجابة السؤال ، لكن هذه طريقة أفضل للقيام بذلك.

أقترح عليك استخدام connect / express كخادم http ، لأنها توفر لك الكثير من الوقت. من الواضح أنك لا تريد إعادة اختراع العجلة. في إدارة الحالة الخاصة بك هو أسهل بكثير مع الاتصال / صريح.

بجانب ذلك للمصادقة ، أقترح عليك استخدام everyauth . الذي يدعم الكثير من استراتيجيات التوثيق. رائع للتطوير السريع.

كل هذا يمكن أن يكون بسهولة مع بعض نسخ لصق من الوثائق الخاصة بهم!

Question

لدي خادم العقدة هذا قيد التشغيل:

var server=http.createServer(function(request, responsehttp) {
    if (request.method == 'POST') {
        var body = '';
        request.on('data', function (data) {
            body += data;
        });
        request.on('end', function () {
            var POST = qs.parse(body);
            processquery(POST, request, responsehttp);
        });
    } else {
        var url_parts = url.parse(request.url, true);
        var query = url_parts.query;
        console.log(query);
        processquery(query, request, responsehttp);
    }
});

أرغب في إضافة نموذج تسجيل الدخول لهذا الخادم. لذلك عند مصادقة المستخدم ، سيظهر.

   function processquery(query, request, responsehttp){
    var returnResult = function (data){
        responsehttp.end(JSON.stringify(data));
    };

    if (!query.command) {
        fileprocess(request, responsehttp);
    }
    responsehttp.writeHead(200, {"Content-Type": "application/json"});
    switch(query.command) {
        case 'logout':
            logout(query, returnResult);
            break;
        case 'login':
            login(query, returnResult);
            break;
    }    
}

في وظيفة الاستعلام عن عملية إرجاع الملفات إلى العميل إذا لم يتم إعطاء أي أمر ، حتى أتمكن من إرسال أمر تسجيل الدخول من العميل إلى الخادم ، ولكن ما يجب أن يفعله الخادم عندما يتلقى أمر تسجيل الدخول باستخدام كلمة مرور اسم المستخدم ، كيف يجب عليه تسليم طلب تسجيل الدخول وإرجاع نجاح أو فشل تسجيل الدخول ، لكتابة هذا الجزء ، أحتاج إلى المساعدة.

ما حاولت.

function login(request, callback) {
    if(request.username==users[request.username] && request.password==users[request.username].password) {
        users[request.username].auth=true;
        var data = {result:'success','message':'login successful'};
        callback(data);
    } else {
        var data = {result:'error','message':'login incorrect'};
        callback(data);
    }
}

يرجى اقتراح كيف يمكنني إضافة جلسة في هذا حاولت إضافة ، طلب متغير في وظيفة تسجيل الدخول وحاول المتغير setting.session الإعداد أنه يقول request.session غير معروف.

يرجى اقتراح كيف يمكنني كتابة وحدة تسجيل الدخول هذه والتي يمكنها الحفاظ على مصادقة تسجيل الدخول بشكل صحيح لكل مستخدم.




alessioalex الجواب هو عرض مثالي للمستخدم عقدة جديدة. ولكن على أي حال ، من الصعب كتابة الوسيطة checkAuth في جميع المسارات باستثناء تسجيل الدخول ، لذلك من الأفضل نقل checkAuth من كل مسار إلى إدخال واحد باستخدام app.use. فمثلا:

function checkAuth(req, res, next) {
  // if logined or it's login request, then go next route
  if (isLogin || (req.path === '/login' && req.method === 'POST')) {
    next()
  } else {
    res.send('Not logged in yet.')
  }
}

app.use('/', checkAuth)



Links