12

今までログイン/登録を行うアプリを作成しましたが、正常に動作します。登録後、ウェルカム メールが送信されます。

しかし、私がやりたいのは、そのメール内で、クリックした後にのみログインできるリンクを送信することです。

フォーラムなどの一般的な登録メールのように.

誰かが私を助けてくれますか?

これは postRegister メソッドです。

public function postRegister()
{
    $input = Input::all();

    $rules = array(
        'username' => 'required',
        'password' => 'required');

    $validation = Validator::make($input, $rules);

    if ($validation->passes()) {

        $password = $input['password'];
        $password = Hash::make($password);

        $user = new User;
        $user->username = $input['username'];
        $user->email = $input['email'];
        $user->password = $password;

            $mailer = new Mailers\UserMailer($user);

                 // var_dump($mailer);

                    $mailer->welcomeMail()->deliver();

                    $user->save();

        return Redirect::to('afterRegister');
    }

    return Redirect::back()->withInput()->withErrors($validation)->with('message', 'Validation Errors!');
} 

ありがとうございました

4

1 に答える 1

26

ここにいくつかの手がかりがあります (コードを書くつもりはありません)。

  • confirmationユーザー テーブルに 2 つのフィールドを追加しますconfirmed
  • のように Laravel でルートを作成します。このルートではregistration/verify/{confirmation}、指定された確認コードで DB 内のユーザーを見つけようとします (見つかった場合は、ユーザーのconfirmedフィールドを 1 に設定します)。
  • ユーザー登録時に、一意の確認コードを生成します (これにはstr_random()ヘルパー関数を使用できます)。
  • それに応じて新しいユーザーのDBエントリを設定します(confirmation=ランダムコード、confirmed= 0)
  • 新しいユーザーへの電子メールに、生成された確認コードを含む確認リンク (確認ルートに従って作成されたもの) を含めます。

認証の試行は、次のように実行できるようになりました。

$user = array(
        'username' => Input::get('username'),
        'password' => Input::get('password'),
        'confirmed' => 1
);

if (Auth::attempt($user)) {
    // success!
    return Redirect::route('restricted/area');
}
于 2013-08-28T10:20:42.430 に答える