2011-08-09 6 views
3

나는 내 웹 사이트를 재구성하기 위해 그것을 사용하여 Yesod를 배웠습니다. yesod init에 의해 생성 된 코드를 사용하기 시작했습니다. 이 코드는 이메일 주소를 제공하여 계정을 만들 수있는 Yesod.Auth.Email을 포함하여 Yesod와 함께 제공되는 인증 프레임 워크를 사용합니다.Yesod.Auth.Email - 공개 사용자 식별자 설정

기본 코드와 관련된 문제는 다음과 같습니다. 사용자 식별자를 이메일 주소로 설정합니다. 웹 사이트에서 식별자를 공개적으로 사용하려는 경우 (예 : 페이지/블로그의 해설자를 식별하는 경우) 사용자는 식별 할 수 있도록 사용자가 신경 쓰지 않아도되는 항목이 필요합니다.

전자 메일 주소를 제출할 시점에서 웹 사이트가 (고유 한) 공개 식별자를 요청하거나 웹 사이트에서 해당 계정의 유효성을 검사하고 암호를 입력하는 링크를 클릭하는 것이 이상적입니다. 문제는 등록/암호 양식이 정의되어 있으므로 Yesod 모듈을 변경해야하는 것입니다.

나는 쉽게 변경할 수 있습니다. 그러나 나는 그들이 원하는 것을하기 위해 Yesod 모듈을 포기하고 정말로 원하지 않습니다. 기존 yesod-auth 모듈을 사용하여이 작업을 수행 할 수있는 또 다른 방법이 있습니까? 프레임 워크를 그대로 사용하는 것이 가능할 수도 있지만, 그렇다면 작은 예가 인정 될 것입니다.

답변

1

나는 당신이 웹 사이트에서 사용자의 ID를 보여주기 위해 사용중인 코드 모르겠지만 당신은 매우 쉽게 사용자 테이블에 열을 추가 할 수 있습니다 단지 보간

User 
    ... 
    publicIdentifier Text Update 

하고 작은 마을에서 변수 :

#{userPublicIdentifier user} 
+0

내가 할 수는 있지만 문제는 사용자가 publicIdentifier를 제공 할 때입니다. 새 사용자를 등록하는 양식은 Yesod.Auth.Email에 정의되어 있지만 사용자 등록시 고유 한 공개 유니크를 묻습니다. 그러므로 Yesod를 포크하는 것처럼 보입니다 .Auth.Email은 내가 원하는 것을 할 수 있습니다. – chrisdb

+0

나는 Max의 접근법을 여전히 권장한다. 우리가 Haskellers를 위해 한 일을 살펴보십시오. 먼저 로그인 한 다음 추가 프로필을 추가하십시오. Yesod 인증은 유일하게 실현 가능한 접근 방법 인 제 3 자 인증으로 훌륭하게 작동해야합니다. –