Saya sedang membangun aplikasi dengan Laravel 5.7 dan angularjs. Saya ingin membuat otorisasi melalui ajax. Login dan Registrasi berfungsi dengan baik, tetapi reset kata sandi tidak berfungsi dengan benar. Masalahnya adalah tidak ada pesan panggilan balik kesalahan atau sukses. Saya perhatikan bahwa permintaan saya menuju ke rute yang benar tetapi kemudian mengarahkan saya ke halaman rumah saya. Jadi sebagai tanggapan saya selalu mendapatkan halaman indeks saya.

Secara default, laravel menampilkan kesalahan "Kami tidak dapat menemukan pengguna dengan alamat email itu." Tetapi jika Anda akan menggunakan ajax, itu tidak akan membuang apa pun dan saya tidak tahu di mana masalahnya, karena login dan registrasi berhasil membuat kesalahan.

//HTML template
<form ng-submit="auth('{{ route('password.email') }}')">
    @csrf
    <div>
        <div>Enter your e-mail</div>
        <div>We will send you an email with a link to create a new password.
        </div>
    <div ng-repeat="error in authErrors.errors">@{{error[0]}}</div>
    </div>
    <div>
        <label for="email">{{ __('E-Mail Address') }}</label>
        <input name="email" ng-model="authInfo.email" type="email" required>
    </div>
    <button type="submit" name="submit">{{ __('Send Password Reset Link') }}</button>
</form>
//JS
    $scope.authInfo = {
        name: null,
        email: null,
        password: null,
        passwordConfirmation: null,
        remember: false
    }
    $scope.authErrors = {};

    $scope.auth = function(route){
        $http({
            method: 'POST',
            url: route,
            data: $scope.authInfo
        }).then(function(response) {
            console.log($scope.authInfo);
            console.log(response);
        }, function(response) {
            console.log($scope.authInfo);
            $scope.authErrors = response.data;
            console.log(response.data)
        })
    }

Pengontrol autentikasi semuanya default.
Saya telah menguji ajax pada proyek yang jelas juga dan mendapatkan hasil yang sama. Jika saya tidak akan mengirim email sebagai data, itu akan menimbulkan kesalahan, bahwa tidak ada email. Tetapi jika saya akan mengirim email, saya hanya akan mendapatkan redirect.
Saya ingin mendapatkan hasil yang sama seperti fungsi registrasi dan login.

Ada saran bagaimana cara memperbaikinya, tolong?

0
qqmydarling 25 Maret 2019, 12:57

1 menjawab

Jawaban Terbaik

Ini berperilaku seperti yang diharapkan, karena fungsi ini akan mengembalikan html dalam skenario sukses dan gagal. Yang harus Anda lakukan adalah mengganti fungsi seperti di bawah ini -

public function sendResetLinkEmail(Request $request)
{

    if($request->ajax()) {

        $this->validateEmail($request);

        // We will send the password reset link to this user. Once we have attempted
        // to send the link, we will examine the response then see the message we
        // need to show to the user. Finally, we'll send out a proper response.
        $response = $this->broker()->sendResetLink(
            $request->only('email')
        );

        return $response == Password::RESET_LINK_SENT
            ? [
                'msg' => 'Successful'
            ]
            : [
                'msg' => 'Reset email sending failed.'
            ];
    }

    return [
        'msg' => 'Un-expected method calls'
    ];
}

Letakkan fungsi di ForgotPasswordController

0
Atiqur 25 Maret 2019, 10:24