2014-09-09 3 views
1

작은 뉴스 리더를 구축하고 인증을 위해 Michael Hartl 's Rails Tutorial을 통해 작업했습니다. 여러 사람이 동시에 로그인 할 수 있도록 기본적으로 기억 토큰을 공유 할 수 있도록 기능을 추가하고 싶습니다. 무슨 일 것은 내가 무엇을 말할 수에서레일 튜토리얼 다중 로그인

def sign_in(user) 
    remember_token = User.new_remember_token 
    cookies.permanent[:remember_token] = remember_token 
    user.update_attribute(:remember_token, User.digest(remember_token)) 
    self.current_user = user 
end 

, 그것은 보인다 거기에 사용자가 로그인이 이전을 지워 버리고 새로운 토큰을 생성 할 때 :

여기처럼 sessions_helper.rb 파일이 어떻게 표시되는지를 보여줍니다.

운 좋게도 보안이 필요한 항목이 아니므로 로그인 할 때마다 새 암호를 생성 할 필요는 없습니다. 몇 주 동안 동일한 토큰을 유지할 수 있습니다.

최종 목표는 내 작업 컴퓨터뿐 아니라 개인용 컴퓨터에서도 로그인 할 수 있고 매회 로그인하지 않아도되도록하는 것입니다.

나는 모든 지침을 고맙게 생각한다. 레일스를 처음 사용하지만 실제로 그것을 즐기고 잘 고르고있다.

건배!

답변

0

여러 로그인과 remember_token 공유의 의미에 대해 잘 모르겠습니다. 동일한 계정을 공유하는 많은 사람들을 의미합니까?

Hartl은이 튜토리얼의 로그인 메커니즘을 명확히하기 위해 두 가지 유형의 인증을 제공합니다. 첫 번째 세션은 세션이라는 임시 쿠키를 사용합니다.이 쿠키는 브라우저를 닫으면 만료되므로 응용 프로그램에서 자동으로 로그 아웃됩니다.

두 번째 시스템은 반영구적 쿠키를 사용하여 첫 번째 레이어 위에 레이어를 추가합니다. 로그인 정보를 입력하고 'remember me'토글을 선택하면 두 번째 메커니즘이 호출됩니다. 즉, remember_token (이것은 사용자가 언급 한 내용입니다)이 생성되어 브라우저에 쿠키로 저장되고 해시되고 저장됩니다. remember_digest 열로 데이터베이스. 따라서 브라우저를 닫고 돌아 오더라도 브라우저에 저장된 반영구적 쿠키 (remember_token)가 해시되고 데이터베이스의 remember_digest와 비교되어 일치하는 경우 로그인 상태를 유지합니다. 새로운 remember_token 명시 적으로 로그 아웃하고 다시 로그인 할 때마다 생성 해시와 데이터베이스에 저장됩니다

그래서 튜토리얼 다음, 당신이 인증을 구현하는 두 가지 옵션이 있습니다.

1) 단지 임시 쿠키를 사용합니다, 이는 remember_token과 remember_digest (데이터베이스)가 필요하지 않습니다.

2) 데이터베이스를 치는 데 필요한 임시 쿠키와 반영구적 쿠키를 모두 사용하십시오.