22

Laravel アプリケーションを開発しています。私のアプリケーションは Laravel 組み込みの認証機能を使用しています。ユーザー登録時のLaravel認証では、認証メールが送信されます。ユーザーがまだログインしていない場合、ユーザーが電子メール内のリンクをクリックして電子メールを確認すると、ユーザーは電子メールを確認するために再度ログインする必要があります。

検証コントローラー

class VerificationController extends Controller
{
    use VerifiesEmails, RedirectsUsersBasedOnRoles;

    /**
     * Create a new controller instance.
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('signed')->only('verify');
        $this->middleware('throttle:6,1')->only('verify', 'resend');
    }

    public function redirectPath()
    {
        return $this->getRedirectTo(Auth::guard()->user());
    }
}

この行にコメントしてみました。

$this->middleware('auth');

しかし、それは機能せず、代わりにエラーをスローします。ユーザーがログインしていなくても、Laravel がメールを検証できるようにするにはどうすればよいですか?

4

8 に答える 8

0

内部の laravel ロジックを (ロジックをオーバーライドせずに) 使用するには、単純に $request->user() を作成し、trait の verify メソッドを呼び出します。検証が成功したら、ユーザーを手動でサインインします。

use VerifiesEmails {
    verify as parentVerify;
}

public function verify(Request $request)
{
    $user = User::find($request->route('id'));
    if (!$user) return abort(404);

    $request->setUserResolver(function () use($user) {
        return $user;
    });

    return $this->parentVerify($request);
}


public function verified(Request $request)
{
    Auth::login($request->user());
}
于 2022-01-02T15:48:16.520 に答える