GAM 統合セキュリティを使用した場合の、パスワードを回復する手段をユーザーに提供する方法について確認します。
例として "GAMExampleLogin" Web オブジェクトを用意しています。これには、ユーザーがパスワードを回復できるようにするリンク ("パスワードをお忘れですか?") があります。
図 1.
このドキュメントで推奨している方法は、新しいパスワードを入力および確認できる Web ページへのリンクを含むメールをユーザーに送信することです。GAM API を使用してすべて解決します。
GAM Example ライブラリで 2 つのオブジェクトが配布されています: GAMExampleRecoverPasswordStep1 および GAMExampleRecoverPasswordStep2。これらは、パスワードの回復機能を提供します。目的は、GeneXus ユーザーがそれぞれの必要に応じてこのサンプルを完成させることです。1.GAMExampleLogin イベントについて確認します。"ForgotPassword" リンクに関連付けられたイベントは、次のとおりです:
Event 'ForgotPassword'
GAMExampleRecoverPasswordStep1.Link()
EndEvent
GeneXus ユーザーは、GAMExampleRecoverPasswordStep1 オブジェクトを編集して、そのコードのコメントを解除し、ユーザーを識別するキーを生成した後でユーザーにメールを送信するコードを追加する必要があります。次の手順を参照してください: 2.GAMExampleRecoverPasswordStep1 イベントを編集します:
Event Enter
&User = GAMRepository.GetUserByLogin(&UserAuthTypeName, &UserName, &Errors)
If &Errors.Count = 0
&KeyToChangePassword = &User.RecoverPasswordByKey(&Errors) --> このコードは、パスワードを回復するキーを生成します (*)
If &Errors.Count = 0
// 手順を記載したメールをユーザーに送信します。例: &Mail.To.Clear() --> &Mail は MailMessage データタイプです。
&Mail.To.New(Format("%1 %2",&User.FirstName, &User.LastName), &User.EMail)
&Mail.Subject = 'GAM でパスワードを変更する'
&Mail.HTMLText = Format('GAM でパスワードを変更するには、<a href="%1">ここ</a>をクリックしてください。',
&Host + &BaseUrl + GAMExampleRecoverPasswordStep2.Link(,&KeyToChangePassword)) (**)
&SMTP.Host = &host --> &SMTP は &SMTPSession データタイプです。
&SMTP.Sender = &Sender
&isOK = &SMTP.Login()
If &SMTP.ErrCode = 0
&SMTP.Send(&Mail)
If &SMTP.ErrCode <> 0
&Message = Format('Failed to send mail: %1 (%2)', &Smtp.ErrDescription, &Smtp.ErrCode)
Endif
&SMTP.Logout()
Else
&Message = Format("Failed to start mail session: %1 (%1)", &SMTP.ErrDescription, &ret)
Endif
If &Message.IsEmpty()
Msg('An email has been sent with instructions to change the password.')Else
Msg(&Message.ToString())
Endif
Else
Do 'DisplayMessages'
EndIf
Else
Do 'DisplayMessages'
EndIf
EndEvent
(*) GAMExampleRecoverPasswordStep1 オブジェクトのフォームでは、ユーザーはユーザー名またはメールアドレスを入力するよう求められます (図 2 を参照)。情報を取得したら、ユーザーを識別するためのキーが生成されます。このキーによって、ユーザーはパスワードを変更できます。このキーは、Web パネルに渡される必要があり、そこでユーザーはパスワードを変更できます。ユーザーの機密を保持する 1 つの方法は、パスワードを変更できる Web パネルへのリンクをメールで (ユーザーのメールに) 送信することです。
(**) GAMExampleRecoverPasswordStep2 を呼び出すとき、 [ Version ] プロパティの値を追加する必要があります。例: GAMExampleRecoverPasswordStep2.Link("15c110fd-e271-4ec4-a911-4cbfe89b627c",&KeyToChangePassword)
3.ユーザーは、パラメーターとしてキーを受け取る "gamexamplerecoverpasswordstep2" オブジェクトへのリンクを含むメールを受信します。そのキーは、上記に示した "&User.RecoverPasswordByKey(&Errors)" コードによって生成されています。図 3 に、GAMExampleRecoverPasswordStep2 オブジェクトの画像を示します。これには、新しいパスワードを 2 回入力し、パスワードの変更を確認するためのフォームおよびロジックがあります。
ユーザーパスワードを変更するコードは、次のとおりです:
&ChangePwdOK = &User.ChangePasswordByKey(&KeyToChangePassword, &UserPasswordNew, &Errors)
ユーザーが新しいパスワードを確認すると、自動的にログインします。処理の成功によって希望するオブジェクトにリダイレクトさせるために、このコードを変更します。
ユーザーパスワード回復キーのタイムアウト
|