2013-03-25 6 views
4

거의 모든 웹 응용 프로그램과 마찬가지로 내 node.js 응용 프로그램에서 현재 사용자를 참조 할 방법이 필요합니다.현재 사용자를 node.js에 저장해야하는 위치는 어디입니까?

로그인/세션 시스템이 작동하지만 한 브라우저에서 내 앱에 로그인하여 다른 브라우저에서 볼 때 첫 번째 브라우저에서 볼 수있는 것과 동일한 데이터를 볼 수 있습니다.

현재 전역 app.current_user 개체에 현재 사용자에 대한 정보를 저장하고 있지만 node.js가 단일 스레드이기 때문에 이것이 모든 요청/세션에서 공유됨을 알게되었습니다. 따라서 나쁜 생각.

현재 사용자에게 참조를 저장하는 올바른 방법은 무엇입니까? 현재 사용자는 사용자 데이터의 해시가 아니라 몽구스 모델이므로 쿠키에 저장하는 것이 좋은 생각이 아니겠습니까?

BTW - 또한 사용자 설정 및 한 번 요청할 때마다 수 차례 발생할 수있는 설정을 할 때마다 다시 가져오고 싶지 않은 몇 가지 사항을 저장합니다. 현재 사용자를 메모리에 캐싱한다고 말할 수 있습니다.

+0

을 내가 passport.js를 사용 인증을 위해 모든 사용자 정보는 req.user에 저장됩니다. 내 사용자를 위해 내 자신의 몽구스 모델을 만들었습니다. –

+0

@StanCromlish - req가 현재 요청으로 범위가 지정되었으므로 (즉, 전역 적이 지 않음)이 기능이 작동합니다. 그러나, 나는 내 애플 리케이션 (여기서 Locomotivejs 프레임 워크를 사용하여) req 개체를 전달할 수 있는지 잘 모르겠습니다. – ragulka

+0

나도 Locomotivejs에 대해 몰라요. Express 및 EJS 뷰를 사용하여 Node.js에서 req 객체를 전달합니다. req로 경로를 정할 수 있다면 Locomotive로 다시 시작할 수 있습니다. –

답변

-1

에서 당신이

  1. here
  2. question
+1

누군가 여기 downvote를 설명해 주시겠습니까?왜 이것이 좋지 않은지 알고 싶습니다. –

1

에서 세션 데이터에 대한 mongostore를 사용하는 방법에 대해 알아보기 간단한 예를 참조 세션에게

//To set up session 
app.use(express.cookieParser()); 
app.use(express.session({secret: 'secret pass', store: sessionStore})); 
//To use it 
req.session = {user:name , model:mongo_model}; 
console.log(req.session.user); 

예를 사용할 수있는 표현이 정보를 저장하는 올바른 장소 abo 같다. 현재 현재 사용자가 요청 개체에 있습니다.

요청 객체를 몽구스 또는 다른 모듈로 전달할 생각이 없다면 라우터/컨트롤러/미들웨어에서 변경해야합니다. 예를 들어, 내 posts_controllerupdate() 조치로 Post 모델의 lastModifiedBy 사용자 ID를 설정할 수 있습니다.

당신은 또한 현재 사용자 데이터를 저장하는 데 상당히 새로운 domain 기능을 사용하지만, 몽구스로 작업 할 때 몽구스 아직 도메인을 지원하지 않기 때문에, 그것은 아직 도움이되지 않습니다 시도 : https://github.com/LearnBoost/mongoose/pull/1337

관련 문제