मेरा ऐप एक्सप्रेस और एंगुलरजेएस का उपयोग करता है। मैं स्थिर के माध्यम से कोणीय कोड के मूल वेब सीवन को संभालने के लिए एक्सप्रेस का उपयोग कर रहा हूं। कोणीय कोड उन सेवाओं का उपयोग करता है जो एक्सप्रेस द्वारा होस्ट किए गए एपीआई एंडपॉइंट्स को हिट करते हैं। मैं केवल यूजर एंडपॉइंट्स को उपयोगकर्ता द्वारा प्रमाणीकृत होने के बाद सुलभ होना चाहता हूं। मैं पासपोर्टजेएस के माध्यम से इसे कैसे पूरा कर सकता हूं?मैं पासपोर्टजेएस के साथ एक एपीआई एंडपॉइंट की रक्षा कैसे कर सकता हूं?
उत्तर
मैंने जिथब पर एक कोणीय-एक्सप्रेस project अपलोड किया है जिस पर मैं काम कर रहा हूं।
यह अभी भी प्रगति पर काम कर रहा है। मुझे उम्मीद है यह मदद करेगा।
यह उपयोगकर्ता प्रमाणीकरण के लिए पासपोर्टजे का उपयोग करता है और सर्वर साइड प्रमाणीकरण का एक मूल उदाहरण है। यह दर्शाता है कि एपीआई कॉल केवल प्रमाणीकृत उपयोगकर्ताओं के लिए सुलभ कैसे करें, या केवल व्यवस्थापक भूमिका वाले उपयोगकर्ताओं के लिए। यह server/routes.js
में हासिल की है मिडलवेयर कार्यों ensureAuthenticated
आह्वान करने और ensureAdmin
जो
// anybody can access this
app.get('/api/test/users',
api.testUsers);
// only logged-in users with ADMIN role can access this
app.get('/api/users',
authentication.ensureAdmin,
api.testUsers);
// only logged-in users can access this
app.get('/api/books',
authentication.ensureAuthenticated,
api.books);
authentication.js
ensureAuthenticated: function(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
return res.send(401);
}
},
ensureAdmin: function(req, res, next) {
// ensure authenticated user exists with admin role,
// otherwise send 401 response status
if (req.user && req.user.role == 'ADMIN') {
return next();
} else {
return res.send(401);
}
},
सुनिश्चित नहीं हैं कि मैं इन कैसे एकीकृत होगा routes.js में server/authentication.js
में परिभाषित कर रहे हैं ... – Shamoon
पर पा सकते हैं मैं अभी तक passportjs का उपयोग नहीं करते, लेकिन मैं सिर्फ एक ही बात आप के लिए देख रहे हैं किया है में जाना जाता है कर। यहाँ मेरी उदाहरण विन्यास है:
// Example configuration
var express = require('express');
var routes = require('./routes');
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(express.cookieParser('shhhh, very secret'));
app.use(express.session());
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.compress());
app.use('/', express.static(expressAppdir)); // look for overrides on express server 1st
app.use('/', express.static(appDir));
// app.use(express.methodOverride());
app.use(app.router);
app.use(function(req, res, next){
var err = req.session.error
, msg = req.session.success;
delete req.session.error;
delete req.session.success;
res.locals.message = '';
if (err) res.locals.message = '<p class="msg error">' + err + '</p>';
if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>';
next();
});
});
app.configure(function() {
// gets
app.get('/', routes.root);
app.get('/login', routes.login);
app.get('/logout', routes.logout);
app.get('/restricted/test/:slug', restrict, routes.restrictedGet); // must be last API route, slug is any request on the end of the routes that is requested.
app.post('/login', routes.loginPost);
});
function restrict(req, res, next) {
console.dir('restrict called');
if (req.session.user) {
next();
} else {
req.session.error = 'Access denied!';
res.redirect('/login');
}
}
//Routes.js file
// my dummy login (in a separate file)
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
exports.restrictedGet = function (req, res, next) {
console.dir('reached restricted get');
var slug = req.params.slug;
console.dir(req.route);
if(req.route.path.indexOf('test')!=-1)
{
namedQuery['testFunction'](req,res,next);
}
else
{
res.status(404).send('no route found. Route requested: ' + req.route.path);
}
// do something with your route here, check what's being appended to the slug and fire off the appropriate function.
};
exports.login = function(req, res, next) {
res.sendfile(serverBase + "/static/public/login.html");
};
exports.logout = function(req, res, next) {
req.session.destroy(function(){
res.redirect('/');
});
};
// this is where you would hook in your passportjs stuff to do hashing of inputted text and compare it to the hash stored in your db etc.
// I use my own simple authentication funciton right now as i'm just testing.
exports.loginPost = function(req, res, next) {
authenticate(req.body.username, req.body.password, function(err, user){
console.log('Reached login user: ', user);
if (user) {
// Regenerate session when signing in
// to prevent fixation
req.session.regenerate(function(){
req.session.user = user;
req.session.success = 'Authenticated as ' + user.name
+ ' click to <a href="/logout">logout</a>. '
+ ' You may now access <a href="/restricted">/restricted</a>.';
res.redirect('/');
});
} else {
req.session.error = 'Authentication failed, please check your '
+ ' username and password.'
+ ' (use "tj" and "foobar")';
res.json({success: false});
res.redirect('/login');
}
});
};
// You could now do this with passport instead:
exports.loginPost = function(req, res, next) {
passport.authenticate('local'), function(err, user){
console.log('Reached login user: ', user);
if (user) {
// Regenerate session when signing in
// to prevent fixation
req.session.regenerate(function(){
req.session.user = user;
req.session.success = 'Authenticated as ' + user.name
+ ' click to <a href="/logout">logout</a>. '
+ ' You may now access <a href="/restricted">/restricted</a>.';
res.redirect('/');
});
} else {
req.session.error = 'Authentication failed, please check your '
+ ' username and password.'
+ ' (use "tj" and "foobar")';
res.json({success: false});
res.redirect('/login');
}
};
};
function authenticate(name, pass, fn) {
var user = { name:name, password: pass }
return fn(null,user);
};
यह वह जगह है जहां मैंने अपने कोड की बहुत मिल गया: http://www.breezejs.com/samples/zza, http://passportjs.org/guide/authenticate/
आशा इस मदद करता है!
#संपादित
#मैं उल्लेख करने के लिए, कोणीय पक्ष के लिए मैं सिर्फ एक साधारण वापस उपयोगकर्ता और पासवर्ड लॉगिन पद समाप्ति बिंदु को के लिए मूल्यों पोस्टिंग फ़ॉर्म दिया गया है के बाद से getEndpoint प्रतिबंधित है भूल गया, एक्सप्रेस ऐप आपके लिए चीजों के बाकी प्रमाणीकरण और प्रतिबंध पक्ष को संभालेगा। अगर मैं किसी और मदद की हो तो कृपया पूछने में संकोच न करें।
मुझे इस विषय पर थोड़ी देर बाद एक लिंक मिला जो आपकी मदद कर सकता है। यह पासपोर्टजेएस का उपयोग नहीं करता है (और मैं इसके बारे में उतना परिचित नहीं हूं जितना मैं बनना चाहता हूं), लेकिन आप एक्सप्रेस के माध्यम से प्रमाणित कर सकते हैं, जिसका आप पहले से उपयोग कर रहे हैं।
सिंगल-रूट प्रमाणीकरण पर अनुभाग (लेख में अंतिम एक) तक स्क्रॉल करें। मैंने उदाहरण को बहुत सीधे आगे पाया और मुझे विश्वास है कि आप अपने एपीआई के मार्ग को प्रमाणित करने के लिए इस पद्धति (या पासपोर्टजेएस) का उपयोग कर सकते हैं।
लिंक: NODE.JS AND EXPRESS - BASIC AUTHENTICATION
आप इस PassportJS में पता लगा मिलता है, अपने परिणामों को वापस पोस्ट करें; मुझे यह देखना अच्छा लगेगा। (यही कारण है कि मैंने आपके प्रश्न को अप-वोट किया)
- 1. मैं ओएथ एपीआई के साथ लॉगिन कैसे कर सकता हूं?
- 2. मैं लिनक्स में एक ढेर मेमोरी की रक्षा कैसे कर सकता हूं?
- 3. मैं PHP में एक MySQL कनेक्शन स्ट्रिंग की रक्षा कैसे कर सकता हूं?
- 4. मैं सुपरजेंट के साथ एंडपॉइंट अपलोड करने के लिए छवि फ़ाइल कैसे पाइप कर सकता हूं?
- 5. मैं अपने डेवलपर्स से अपने एएसपी.Net स्रोत कोड की रक्षा कैसे कर सकता हूं
- 6. अमेज़ॅन एपीआई गेटवे एंडपॉइंट
- 7. मैं एक वर्कशीट में एक ही क्लिक के साथ सभी वर्कशीट की रक्षा कैसे करूं?
- 8. मैं एक जेपीनेल की सामग्री कैसे प्रिंट कर सकता हूं?
- 9. मैं थोक खोज कैसे कर सकता हूं और पर्ल के साथ प्रतिस्थापित कैसे कर सकता हूं?
- 10. क्या मैं अपनी खुद की छवियों के साथ Google स्ट्रीव्यू एपीआई का उपयोग कर सकता हूं?
- 11. मैं ऑक्सीप्लॉट के साथ एक कंटूररीज़ कैसे बना सकता हूं और प्लॉट कर सकता हूं?
- 12. मैं इलेक्ट्रॉन के साथ निर्मित एक वाणिज्यिक ऐप की रक्षा कैसे करूं?
- 13. वेबफोंट की रक्षा कैसे करें
- 14. क्या मैं रेल एपीआई के साथ एक इंसर्ट-सिलेक्शन ऑपरेशन कर सकता हूं?
- 15. मैं Google स्प्रेडशीट एपीआई का उपयोग कैसे कर सकता हूं?
- 16. मैं फेसबुक एपीआई के माध्यम से उपयोगकर्ता के पूर्ण न्यूज़फीड को कैसे प्राप्त कर सकता हूं?
- 17. आरएक्सजेएस: मैं पर्यवेक्षकों के साथ "अगर" कैसे कर सकता हूं?
- 18. मैं नोड.जेएस/एक्सप्रेस 4 में अपलोड कैसे कर सकता हूं?
- 19. मैं वर्डप्रेस के साथ कस्टम क्वेरी कैसे कर सकता हूं?
- 20. मैं इसे MySQL के साथ कैसे कर सकता हूं?
- 21. अदृश्य रीकैप्चा के साथ jquery बटन की रक्षा कैसे करें?
- 22. मैं आईएमएपी की आईडीईएल को कैसे बाधित कर सकता हूं?
- 23. मैं PHP के साथ एचटीएमएल कैसे आयात कर सकता हूं?
- 24. मैं कैसे बता सकता हूं कि यूट्यूब वीडियो की सामग्री यूट्यूब एपीआई के साथ बदलती है?
- 25. मैं कोको के साथ एक फ़ोल्डर की निगरानी कैसे कर सकता हूं?
- 26. मैं कचरा संग्रहण के साथ प्रयोग कैसे कर सकता हूं?
- 27. मैं पर्ल के साथ स्क्रैप कैसे स्क्रीन कर सकता हूं?
- 28. मैं आरआरडीटोल के साथ डेटा कैसे अपडेट कर सकता हूं?
- 29. डीएलएस की रक्षा कैसे करें?
- 30. मैं कार्यात्मक प्रोग्रामिंग के साथ कैसे शुरू कर सकता हूं?
परियोजना अभी तारांकित है।धन्यवाद! – nkint