2012-04-15 11 views
1

ich das am Anfang verwendet:Backbone, Knoten, Session-Validierung, meine Methode arbeiten, aber mir sagen, ob es richtig ist oder nicht

var app = express.createServer(
    express.cookieParser(), 
    express.session({ secret: 'somesecretword' }) 
); 

Below-Code ist ein Beispielcode Benutzerdaten erhalten mit uname als Schlüssel

Ich rufe diesen Code aus Backbone-Modell-URL, indem Sie model.fetch() aufrufen.

app.get('/user/:uname/', function (req, res) { 

    var uname=req.params.uname; 
    if(!req.session.user) // check if logged in 
    res.send("Not Logged In"); 

    return UserModel.find({uname : uname},function(err, user) { 
    if (!err) { 
     return res.send(user); 
    } else { 
     return res.send(err); 
    } 
    }); 
}); 

Also, hier schrieb ich den Code für die Validierung Sitzung direkt in der oben genannten Get-Methode.

Was ist, wenn ich viele solcher Methoden habe? Muss ich in jeder Methode dasselbe schreiben, oder gibt es einen Controller in Node, der diese Arbeit erledigt?

Zum Beispiel, zeigen Sie mir einen Controller, der für die Pfade validiert "/ Benutzer", bedeutet "/ user/nothinghere /" sollte automatisch validiert werden oder zeigen Sie mir einen anderen besseren Weg.

Antwort

2

Was Sie benötigen, ist eine Art Middleware, die mit der App.get-Methode übergeben wird. Ich kann nicht genau neu schreiben Ihren Code-Block, wie ich selbst bin immer noch Node.js lernen, wie immer diese von der Express-Dokumentation (ein wenig modifiziert, um zu versuchen und Ihre Bedürfnisse anzupassen) hier

function requireAuth(req, res, next) { 
    if(req.session.user) { 
    next(); 
    } else { 
    next(new Error('Failed to load user ' + req.params.id)); 
    } 
} 

app.get('/user/edit/:id', requireAuth, function(req, res){ 
    res.send('you can see this because you are authed'); 
}); 

app.get('/', function(req, res){ 
    res.send('Not requiring auth on homepage'); 
}); 

Die Dokumentation erklärt es ich kann dann besser:

http://expressjs.com/guide.html#route-middleware

ich hoffe, dass dies eine Hilfe sein kann. :) Wenn überhaupt, ich habe gerade erfahren, neue antwortete etwas dieses, also danke: D

+0

Sie haben recht, danke für die Antwort, aber was bedeutet u ist, müssen wir nennen das „requireAuth“ in jeder Definition von app.get, richtig? Kann jemand antworten, ohne das zu benutzen, ich meine, ich will wissen, ob es möglich ist oder nicht, zu tun. wenn möglich, wie? – user1305989

Verwandte Themen