1
내 노드 응용 프로그램에 passportJS를 구현했습니다. 로그인 한 후 세션에 배치 한 객체를 얻습니다.PassportJS - 세션 객체를 얻는 방법
{ loginStatus: 'SUCCESS',
orgRoles: { '7': 'ALL' },
orgNames: { '7': '[email protected]' },
loginId: 4,
message: 'Success',
success: true }
이 (커피 스크립트에서) 여권의 구성입니다 :
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': '[email protected]' },
loginId: 4,
message: 'Success',
success: true }
deserializing { loginStatus: 'SUCCESS',
orgRoles: { '7': 'ALL' },
orgNames: { '7': '[email protected]' },
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': '[email protected]' },
loginId: 4,
message: 'Success',
success: true }
질문을 구걸하는 것은 맞습니까? 이 데이터를 얻으려면 요청 객체를 자세히 살펴 봐야합니까? 'req.req.user'가 맞습니까?