2013-05-11 10 views
6

Piszę prostą aplikację, używając pliku node.js i passport.js do uwierzytelniania.Uzyskiwanie dostępu do obiektu żądania w funkcji serializeUser w pliku passport.js

Czy mogę uzyskać dostęp do obiektu żądania w postaci serializeUser?

+0

Chciałem zadać to pytanie. [Wydaje się, że istnieje już sposób, aby to zrobić teraz] (https://github.com/jaredhanson/passport/issues/111), ale niestety nie jestem tak dobrze zorientowany w paszporcie, aby zrozumieć, jak to działa. Czy ktoś mógłby proszę odpowiedzieć na to wyjaśnienie, w jaki sposób 'req' jest dostępny wewnątrz' passport.deserializeUser (funkcja (id, done) '? – laggingreflex

Odpowiedz

1

myślę itr i laggingreflex pytania są nieco inaczej:

Aby odpowiedzieć itr:

Aby uzyskać dostęp do obiektu żądania trzeba zrobić wewnątrz wyraźnej warstwy pośredniej, która będzie zajmować się zezwolenia swojego zasobu.

function authMethod(req, res, next) { 
    if (req.isAuthenticated()) 
    { 
     console.log(req.user); 
     return next(); 
    } 
    res.status(401).send({user:undefined}); 
} 
app.get('/',authMethod,function(req,response) 
{ 
    res.status(200).send("OK"); 
} 

Jeśli zrobiłeś prawo konfiguracji Passaport dokona modyfikacji żądanie obiektu, dzięki czemu można uzyskać dostęp do informacji o użytkownikach z req.user. Masz również metodę, req.isAuthenticated(), aby sprawdzić, czy auth osoby trzeciej udało się.

Aby odpowiedzieć laggingreflex:

Nie można uzyskać dostępu do obiektu żądania wewnątrz passport.deserializeUser i passport.serializeUser ponieważ metody te są radzić sobie z serializacji informacji poufnych sesji użytkownika (Spójrz na github wyjaśnienia). Te metody otrzymują obiekt i funkcję jako parametry. Na serializeUser pierwszym parametrem jest obiekt z informacjami o użytkowniku, który zostanie przekształcony do postaci szeregowej i przejdzie do funkcji done (wywołanie zwrotne). Na deserializeUser pierwszym parametrem jest obiekt, który został serializowany, że musisz wykonać operację odwrotną.