authentication login using - كيفية تنفيذ auth تسجيل الدخول في node.js




2 Answers

إليك كيف أفعل ذلك مع Express.js :

1) تحقق مما إذا كان المستخدم قد تمت مصادقته : لدي وظيفة وسيطة باسم CheckAuth والتي أستخدمها في كل مسار يحتاج إلى مصادقة المستخدم:

function checkAuth(req, res, next) {
  if (!req.session.user_id) {
    res.send('You are not authorized to view this page');
  } else {
    next();
  }
}

أستخدم هذه الوظيفة في مساراتي مثل هذا:

app.get('/my_secret_page', checkAuth, function (req, res) {
  res.send('if you are viewing this page it means you are logged in');
});

2) طريق الدخول:

app.post('/login', function (req, res) {
  var post = req.body;
  if (post.user === 'john' && post.password === 'johnspassword') {
    req.session.user_id = johns_user_id_here;
    res.redirect('/my_secret_page');
  } else {
    res.send('Bad user/pass');
  }
});

3) طريق الخروج:

app.get('/logout', function (req, res) {
  delete req.session.user_id;
  res.redirect('/login');
});      

إذا كنت ترغب في معرفة المزيد عن Express.js تحقق من موقعها هنا: Express.js إذا كانت هناك حاجة لأشياء أكثر تعقيدا ، everyauth (يوجد الكثير من طرق المصادقة المتاحة ، على everyauth ، twitter الخ ؛ تعليمي جيد على ذلك here ).

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

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 غير معروف.

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




لإضافة إلى جواب فريد الزائف ،

النظر في استخدام Passport.js على everyauth .

توفر الإجابات على هذا السؤال بعض الضوء على الاختلافات.

هناك الكثير من الفوائد لتفريغ مصادقة المستخدم إلى Google أو Facebook أو موقع ويب آخر. إذا كانت متطلبات التطبيق الخاص بك بحيث يمكنك استخدام Passport كموفر مصادقة وحيد أو إلى جانب تسجيل الدخول التقليدي ، يمكن أن يجعل التجربة أسهل للمستخدمين.




Related