Atualização logado detalhes do usuário na sessão

votos
18

Eu estou usando PassportJS com ExpressJS.

Eu preciso atualizar o logado detalhes do usuário. Enquanto eu atualizar esta no DB, como faço para atualizá-lo na sessão também para que request.user contém os detalhes do usuário atualizados?

Ou seja, depois de atualizar o banco de dados, como faço para atualizar as informações de sessão do usuário, bem?

Tentei diretamente atribuindo os detalhes atualizados para request.user, mas não funcionou. Então eu tentei request.session.passport.user- isso funcionou, mas há um atraso de cerca de 5 a 10 segundos antes de ele é atualizado em request.user também.

Existe uma função que eu preciso chamar que atualiza as informações do usuário armazenadas na sessão? Ou há algum outro objeto que eu possa atualizar onde a mudança não tem um atraso

Publicado 30/06/2014 em 16:06
fonte usuário
Em outras línguas...                            


1 respostas

votos
27

Eu fui caçar uma resposta para isso também. Nunca mencionou em nenhum docs ou tutoriais!

O que parece funcionar é, depois de salvar seu usuário recém-atualizado, fazer req.login(user)...

// "user" is the user with newly updated info
user.save(function(err) {
    if (err) return next(err)
    // What's happening in passport's session? Check a specific field...
    console.log("Before relogin: "+req.session.passport.user.changedField)

    req.login(user, function(err) {
        if (err) return next(err)

        console.log("After relogin: "+req.session.passport.user.changedField)
        res.send(200)
    })
})

A pista estava aqui ... https://github.com/jaredhanson/passport/issues/208

Respondeu 30/06/2014 em 21:46
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more