2014-09-18 2 views
0

동시에 사용할 수 있어야하는 Passportj를 사용하여 두 개의 LOCAL 전략을 구현해야합니다.PassportJS - 동시에 여러 로컬 전략 사용

여기 시나리오가 있습니다. 사용자 및 인증실에 각각 이름과 암호가있는 회의실이 있다고 가정 해 봅니다. 분명히 다른 이름 (예 : 'user-local'및 'room-local')과 성공한 이름 및 비밀번호 유효성 확인을 통해 해당 객체 (user 또는 room)를 반환하는 두 개의 별도 지역 전략을 정의 할 수 있습니다. 개체 유형을 serializeUser/deserializeUser 개의 방법으로 구분할 수도 있습니다. 내가 가지고있는 문제는 req.login 메서드가 각 성공한 인증 후에 하나의 변수 (req.user)를 채 웁니다. 따라서 사용자로 성공적으로 인증하면 req.user에 내 User 개체가 보관됩니다. 나중에 방으로 인증하면 req.userRoom 객체가 채워지고 이전 User 객체를 덮어 씁니다. 이것은 두 객체 모두에 대해 req.user을 통해 특정 객체 메소드 & 필드에 액세스해야하므로 (두 인증이 모두 성공적으로 완료되었을 때) 나에게 문제가 발생합니다. 동일 함은 req.isAuthenticated 방법입니다. 마지막 인증 결과를 기준으로 true/false을 반환하고 이전 인증 결과를 무시합니다.

내가 원하는 것을 어떻게 할 수 있습니까?

답변

0

사용자가 먼저 사용자의 로그인 정보없이 로그인 할 수있는 경우 나중에 서로 맺을 수있는 2 개의 인증 논리가 있습니다. 나는 을 다시 로그인하기 전에 세션에 저장하거나 사용자/룸 정보를 다른 req 변수에 저장하는 새로운 인증 시스템을 구현합니다.

Passportjs는 다양한 전략 유형으로 단일 사용자 인증 논리를 처리하는 데 도움이됩니다. 세션 당 한 명의 사용자 (세션을 사용하는 것이 좋습니다).

+0

PassportJS가 필수 인증 논리를 구현할 수없는 경우 ok - 수행 할 수있는 다른 대안이 있습니까? –

+0

나는 그렇게 생각하지 않는다. 시나리오가 매우 구체적이다. 사용자 + 비밀번호 인증을위한 Passportjs 논리 (로컬 전략)는 매우 간단하며, =)를 살펴보고 직접 구현할 수도 있습니다. "아무도 그럴 시간이 없어!" - 세션에 저장하기 위해 이동 :) –

관련 문제