2011-02-02 2 views
7

Java EE 6 Web Profile을 사용하여 웹 응용 프로그램을 개발 중입니다. 새 사용자에게 자신의 계정에 대한 활성화 링크를 전자 메일로 보내려고합니다. 어떻게 구현해야합니까? JSF2를 사용하고 있습니다. 이 작업을 수행하는 데 필요한 사양이나 권장 방법이 있습니까?Java EE 6에서 활성화 URL 생성

+0

활성화 URL과 함께 보내야하는 "key"를 작성하는 방법이나 JSF에서 북 마크 가능 URL 생성을 원하십니까? – Nishant

+0

정확히 사용자가 등록하고 키가있는 URL이 다음과 같이 자신의 이메일로 전송됩니다. http://mysite.com/activate?key=dsafadsfwe를 클릭하여 계정을 활성화하십시오. – arg20

+0

jsf에서 URL에 액세스하여 키 매개 변수 또는 다른 것을 얻을 수있는 경우 – arg20

답변

16

내가 활성화하기 위해 자신의 이메일 ID를 확인하기 위해 사용자가 필요로하는 프로젝트에 일을 가지고 JSF 성공 페이지로 사용자 활성화/유효성 검사를 수행하고 리디렉션 서블릿을 포함 자신의 기재. 키 생성 프로세스는 다음과 같이이었다 :

키 만들기

  1. 이 사용자에 대한 독특한 검증 키를 보유하고 users 테이블의 열 verification_key을 만듭니다.
  2. 소금을 암호로 사용하여 고유 사용자 이름 (이 경우 email-id)의 SHA256 해시를 사용하십시오.
  3. 해시를 base64으로 변환하고 해당 사용자의 verification_key에 저장하십시오. 이것은 고유 할 것입니다 (실제적인 목적을 위해, 나는 충돌의 확률에 들어 가지 않을 것입니다). key = Base64(Hash256(uniqueUserName+"."+password))

그래서, 결론, ...

보조 노트은 : BTW, 아무것도 당신이 소금으로 암호를 사용하도록 제한합니다. 소금 상대로 임의의 문자열을 만들면됩니다. 우리가 verification_key이 고유 알고 있기 때문에

검증

  1. , 요청 매개 변수에서 key를 얻을 수와 일치하는 행을 찾을 수 있습니다.
  2. 발견 된 경우 verification_keynull (이 경우 충돌 가능성을 줄입니다.)으로 설정하고 사용자를 "성공적으로 확인한 페이지"로 지정하십시오.
  3. 발견되지 않으면 사용자를 "already-activated/key-not-found/401 페이지"로 데려가십시오.
+1

안녕하세요. 이것은 매우 유용한 답변입니다. 구현에서 한 가지 더 알고 싶습니다.사용자가 활성화되면 그가 뭔가를하려고 할 때마다 다시 확인하지 않아도됩니다. 따라서 다른 테이블이 있어야합니다. 예를 들어 "pending_users"라고 말하면 사용자가 user 테이블에 있으면 활성화 될 수 있습니까? – arg20

+1

'UUID.randomUUID()'는 난수 생성에 사용될 수 있습니다. –

1

활성화 URL은 'service'요청을 처리하는 소프트웨어 서비스의 느낌을 불러 일으 킵니다. 이 서비스를 실현하기

좋은 후보가

+0

jsf2 전에 정말 필요 없어. 코드 조각 좀 보여 주시겠습니까? – arg20