2010-07-27 2 views
1

파이썬에서 Google 엔진 앱을 사용하고 있습니다. 맞춤 사용자 인증을 추가하고 싶습니다. 모범 사례와 함께 어떻게 완료됩니까?사용자 정의 사용자 인증. 모범 사례와 함께 어떻게 완료됩니까?

앱이 Flex로 제작되어 HTML 페이지로 리디렉션하지 않기 때문에 맞춤 인증이 필요합니다.

사용자 값 오브젝트

는 다음과 같이이다 :

class User(db.Model): 
    email = db.EmailProperty(required = True, indexed = True) 
    masked_password = db.StringProperty(required = True) 
    # maybe more things here 

내가 암호를 마스크하고 싶은, 거기에 일부 GAE에서 기능을 내장입니까?

그러면 현재 사용자를 어떻게 기억할 것입니까? 세션과 쿠키를 통해? 아니면 또 뭐야?

+1

맞춤 인증을 사용하지 않는 것이 가장 좋습니다. Google 계정 또는 OpenID를 사용합니다. 사용자는 _yet_ _ 다른 사이트에 가입 할 필요가 없습니다. –

+0

하지만 메인 페이지 (플래시)로 이동 한 다음 google 로그인 (HTML)으로 이동 한 다음 메인 페이지 (플래시)로 돌아 가야합니다. 그것은 매우 냉담한 것이 아닙니다. –

답변

3

암호 :

암호를 처리하는 최선의 방법은 각 사용자에 대한 임의의 소금 값 및 패스워드 + 염 해시의 결과를 저장한다.

사용자가 로그인하려면 해시 (password + salt)를 계산하고 암호가 원래 설정되었을 때 저장 한 해시 값과 같은지 확인하십시오. 이 아이디어는 절대로 암호를 일반 텍스트로 저장하지 않으며 동일한 암호를 사용하는 두 명의 사용자가 동일한 해시 값을 가질 수 없습니다.

이 온라인 및 SO의 많은 예를 찾을 수 있습니다.

세션 :

이 세션을 구현하는 여러 가지 방법과 쿠키를 사용하여 인기가있다. 이미이 목적으로 사용 가능한 라이브러리 중 하나를 사용하는 것이 좋습니다. 이 내용은 comparison of libraries을 참조하십시오.

+0

감사합니다 : D 나는 gae의 세션을 사용하는 것이 길이 아니라는 것을 보았다는 것을 알고 싶습니다. 그래서 질문은 더 빠르고 좋은 대안이 있습니까? :) –

+0

GAE 앱에서받은 모든 요청을 사용자와 연관시켜야합니까? 그렇다면 세션이 필요하거나 Flex의 모든 요청을 인증해야합니다. "갈 길이 멀지 않은"세션에 대해 더 구체적으로 설명 할 수 있습니까? 내가 그것을 보았던 – cope360

+0

, 그들은 모든 페이지 요청에 세션을 사용하기에는 너무 많은 요청이있을 것이라고 말했다. (제 경우에는 거의 모든 요청에 ​​대해 현재 사용자에 대해 알 필요가 있습니다.) –

1

사용자 고유의 인증을 구현하지 마십시오.

시작 페이지를 인증으로 표시해야합니다 (예 : app.yaml의 "login : required"). 그런 다음 앞 페이지를 열면 Flash/Flex 앱을보기 전에 인증을 요청 받게됩니다 또는 이미 인증 된 경우 곧바로 앱으로 이동합니다.

플래시 -> HTML -> 플래시 문제를 피하고 내장 된 적절한 인증을 활용할 수 있습니다. (내 앱은 데이터 저장소에 사용자 설정 및 권한 테이블을 유지하지만 GAE 인증 된 현재 사용자 ID를 키)

관련 문제