私はYesodを使って自分のウェブサイトを再構築しています。私はyesod init
によって生成されたコードを使い始めました。このコードでは、Yesod.Auth.EmailなどのYesodに付属の認証フレームワークを使用しています。このフレームワークでは、電子メールアドレスを指定してアカウントを作成できます。Yesod.Auth.Email - パブリックユーザーIDを設定する
私がデフォルトコードで持っている問題は、これはユーザー識別子を電子メールアドレスに設定することです。識別子がウェブサイト上で公然と使用される場合(例えば、ページ/ブログ上の解説者を特定する場合)、ユーザは、それらを識別するために表示されても構わないものが必要です。
理想的には、電子メールアドレスを送信した時点で、またはアカウントを検証してパスワードを入力するリンクをクリックしたときに、(一意の)公開識別子を尋ねるようにします。問題は、レジスタ/パスワード形式がそこに定義されているため、Yesodモジュールに変更が必要なように見えることです。
変更を簡単に行うことができます。しかし、私は彼らが私がしたいと思うようにするためにYesodモジュールを捨て去ることを本当に望んでいません。既存のyesod-authモジュールを使用してこれを行う別の方法はありますか?これは、フレームワークをそのまま使用して行うことができる可能性はありますが、そうであれば、小さな例が認められます。
私はそれを行うことができましたが、問題はユーザーがそのpublicIdentifierを提供したときです。新しいユーザーを登録するためのフォームはYesod.Auth.Emailで定義されていますが、ユーザーの登録時に固有のパブリックユニークを要求したいと思います。したがって、私はYesod.Auth.Emailをフォークする必要があるかのように思えます。 – chrisdb
私はまだMaxのアプローチを推奨します。私たちがHaskellersのためにしたことを見てください:最初にログインしてから、追加のプロファイルを追加してください。 Yesod認証は、唯一の実現可能なアプローチである第三者認証でうまくいくと考えられています。 –