আমি নোড.জেএস, এক্সপ্রেস এবং পাসপোর্ট.জেএস ব্যবহার করে লগইন প্রক্রিয়া প্রতিষ্ঠার চেষ্টা করছি। লগইন নিজেই বেশ সুন্দর কাজ করে, সেশনগুলিও রেডিসের সাথে খুব ভালভাবে সংরক্ষণ করা হয় তবে ব্যবহারকারীর পুনর্নির্দেশের সাথে আমার কোনও সমস্যা হয় যেখানে তিনি প্রমাণীকরণের অনুরোধ জানাতে আগে থেকেই শুরু করেছিলেন।
উদাহরণস্বরূপ ব্যবহারকারীর লিঙ্কটি http://localhost:3000/hidden
এরপরে পুনঃনির্দেশিত হয় http://localhost:3000/login
তবে আমি তাকে আবার পুনঃনির্দেশিত করতে চাই http://localhost:3000/hidden
।
এর উদ্দেশ্য হ'ল, ব্যবহারকারী যদি প্রথমে এলোমেলোভাবে কোনও পৃষ্ঠায় লগইন করার প্রয়োজন হয় তবে তাকে তার শংসাপত্রগুলি সরবরাহ করে / লগইন সাইটটিতে পুনঃনির্দেশিত করা হবে এবং তারপরে তিনি পূর্বে অ্যাক্সেস করার চেষ্টা করেছিলেন এমন সাইটটিতে পুনঃনির্দেশিত করা হবে।
এখানে আমার লগইন পোস্ট
app.post('/login', function (req, res, next) {
passport.authenticate('local', function (err, user, info) {
if (err) {
return next(err)
} else if (!user) {
console.log('message: ' + info.message);
return res.redirect('/login')
} else {
req.logIn(user, function (err) {
if (err) {
return next(err);
}
return next(); // <-? Is this line right?
});
}
})(req, res, next);
});
এবং এখানে আমার নিশ্চিত প্রমাণিত পদ্ধতি od
function ensureAuthenticated (req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login');
}
যা /hidden
পৃষ্ঠাতে হুক করে
app.get('/hidden', ensureAuthenticated, function(req, res){
res.render('hidden', { title: 'hidden page' });
});
লগইন সাইটের জন্য এইচটিএমএল আউটপুটটি বেশ সহজ
<form method="post" action="/login">
<div id="username">
<label>Username:</label>
<input type="text" value="bob" name="username">
</div>
<div id="password">
<label>Password:</label>
<input type="password" value="secret" name="password">
</div>
<div id="info"></div>
<div id="submit">
<input type="submit" value="submit">
</div>
</form>