PassportJS – 如何获取会话对象

我在我的节点应用程序中实现了passportJS。 login后,我得到一个对象,我放在会话中。 这是对象:

{ loginStatus: 'SUCCESS', orgRoles: { '7': 'ALL' }, orgNames: { '7': 'kianoshp@gmail.com' }, loginId: 4, message: 'Success', success: true } 

这是护照configuration(在coffeescript):

 passport.serializeUser (user, done) -> console.log 'serializing', user done null, user passport.deserializeUser (user, done) -> console.log 'deserializing', user done null, user #passport LocalStrategy passport.use new LocalStrategy usernameField: 'email' passwordField: 'password' , (username, password, done) -> validateUser username, password, done validateUser = (username, password, done) -> console.log 'loginName is --> ' + username + ' password --> ' + password options = protocol: API_PROTOCOL host: API_HOST pathname: '/appservices/login' reqURL = url.format options requestOptions = headers: 'Content-type': 'application/json; charset=utf-8' body: JSON.stringify loginName: username password: password method: 'POST' request reqURL, requestOptions, (error, response, body) -> console.log 'body is --> ' + body resObj = JSON.parse body.toString() console.log 'loginStatus is --> ' + resObj.loginStatus if resObj.loginStatus is 'FAIL' or resObj.loginStatus is 'INVALID_PASSWORD' or resObj.loginStatus is 'LOGIN_NOT_FOUND' return done null, false, message: 'We couldn\'t find that email/password, please try again.' if resObj.loginStatus is 'ACCOUNT_LOCKED' return done null, false, message: 'The user has been locked out due to too many unsuccessful login attempts or the admin has locked the account. Please contact admin or customer support.' if resObj.loginStatus is 'NO_LOGIN_DOMAIN_AVAILABLE' return done null, false, message: 'The login attempt is valid but there is no registered domain that the login can access. Please contact admin or customer support.' if resObj.loginStatus isnt 'SUCCESS' return done null, false, message: 'The login attempt has failed. If you feel this is an error please try again or contact admin/customer support.' done null, resObj app.configure -> #app.use express.logger() app.use express.static(__dirname + '/public') app.use express.cookieParser() app.use express.bodyParser() app.use express.methodOverride() app.use express.session secret: '###########' store: new RedisStore() cookie: maxAge: 3600000 app.use flash() app.use passport.initialize() app.use passport.session() app.set 'view engine', 'jade' app.set 'views', __dirname + '/views' app.use app.router 

我看到的输出:

 serializing { loginStatus: 'SUCCESS', orgRoles: { '7': 'ALL' }, orgNames: { '7': 'kianoshp@gmail.com' }, loginId: 4, message: 'Success', success: true } deserializing { loginStatus: 'SUCCESS', orgRoles: { '7': 'ALL' }, orgNames: { '7': 'kianoshp@gmail.com' }, loginId: 4, message: 'Success', success: true } 

我希望能够访问我放置在会话中,并从中获取值。 例如,当我发出GET请求时,我希望能够执行以下操作:

 app.get '/threatStatus', (res, req) -> #I would like to retrieve the loginId for the user that I placed in the session 

任何帮助是极大的赞赏!!

干杯,

Kianosh

更新:通过进行以下调用,我能够获取所需的数据:

 app.get '/threatStatus', (res, req) -> console.log req.req.user 

其中输出以下内容:

 { loginStatus: 'SUCCESS', orgRoles: { '7': 'ALL' }, orgNames: { '7': 'kianoshp@gmail.com' }, loginId: 4, message: 'Success', success: true } 

哪个问题,这是正确的? 我是否应该深入查询请求对象才能获取这些数据? 'req.req.user'是正确的吗?

用户对象应该通过req.user来检索。

您可以validation用户是否通过req.isAuthenticated()login,以避免处理未定义的req.user。