Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan fungsi tetapan semula kata laluan dalam laravel

Bagaimana untuk melaksanakan fungsi tetapan semula kata laluan dalam laravel

PHPz
PHPzasal
2023-04-21 10:05:491108semak imbas

Dalam aplikasi web moden, tetapan semula kata laluan pengguna ialah ciri penting. Proses penetapan semula kata laluan yang direka dengan baik bukan sahaja dapat memastikan keselamatan akaun pengguna, tetapi juga meningkatkan pengalaman pengguna. Laravel ialah rangka kerja pembangunan web PHP yang popular yang turut menyepadukan sistem tetapan semula kata laluan yang mudah. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan fungsi tetapan semula kata laluan.

Persediaan alam sekitar

Sebelum anda memulakan, pastikan anda telah melengkapkan pemasangan berikut:

  • PHP 7.2 dan ke atas
  • Komposer 2 dan ke atas
  • Laravel 5.5 dan ke atas

Jika anda belum memasang Laravel, anda boleh memasangnya di terminal melalui arahan berikut:

composer create-project --prefer-dist laravel/laravel project-name

Proses penetapan semula kata laluan

Proses penetapan semula kata laluan Laravel adalah berdasarkan pemberitahuan e-mel. pautan untuk menetapkan semula kata laluan ke aplikasi; Aplikasi menentukan sama ada pautan telah tamat tempoh dan sah ;

    Jika pautan itu sah, borang untuk memasukkan kata laluan akan muncul pada halaman
  1. Pengguna mengisi kata laluan baharu;
  2. Pengguna menyerahkan borang;
  3. Aplikasi menetapkan semula kata laluan pengguna.
  4. Oleh itu, kita perlu melaksanakan setiap langkah proses ini.
  5. Konfigurasi mel
  6. Pertama, kita perlu mengkonfigurasi mel dalam Laravel. Buka fail
  7. dan tambahkan konfigurasi berikut di dalamnya:

Konfigurasi di sini perlu diubah suai mengikut situasi sebenar anda

menentukan penyedia perkhidmatan e-mel yang digunakan, seperti , atau

dsb. Di sini kami menggunakan pembekal perkhidmatan e-mel Alibaba Cloud

, dan anda perlu mengisi nama pengguna dan kata laluan e-mel anda. .env digunakan untuk menentukan alamat penghantaran untuk menghantar e-mel.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mxhichina.com
MAIL_PORT=25
MAIL_USERNAME=youremail@example.com
MAIL_PASSWORD=yourpassword
MAIL_FROM_ADDRESS=youremail@example.com
MAIL_ENCRYPTION=
Seterusnya, kita perlu mengkonfigurasi pilihan penghantaran e-mel dalam fail

, seperti menetapkan nama dan alamat pengirim: MAIL_DRIVERsmtpmailgunsendmailKonfigurasi penghalaansmtp.mxhichina.comMAIL_FROM_ADDRESS

Sekarang, kita perlu mengkonfigurasi laluan untuk mengendalikan operasi tetapan semula kata laluan. Dalam Laravel, kita boleh menggunakan pengawal Kata Laluan terbina dalam untuk mengendalikan logik menetapkan semula kata laluan. Buka fail

dan tambahkan laluan berikut: config/mail.php

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'youremail@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Your Name'),
],
Di sini kami menggunakan dua pengawal dalam

, iaitu dan , untuk mengendalikan penghantaran e-mel tetapan semula kata laluan masing-masing. dan operasi tetapan semula kata laluan.

routes/web.phpLihat konfigurasi

// Password Reset Routes
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

Seterusnya, kita perlu menambah paparan untuk memaparkan borang untuk pengguna mengisi e-mel dan kata laluan mereka. Kami boleh menggunakan kod templat Blade yang serupa dengan coretan kod berikut: AuthForgotPasswordControllerResetPasswordControllerDalam halaman ini, kami menggunakan borang untuk menerima alamat e-mel yang diisi oleh pengguna, dan menambah butang hantar Klik butang ini Pautan tetapan semula kata laluan akan dihantar ke alamat e-mel ini.

Kami juga perlu menambah paparan lain untuk membolehkan pengguna memasukkan kata laluan baharu. Coretan kod yang serupa dengan yang berikut boleh digunakan untuk melaksanakan borang sedemikian:

Borang ini memerlukan pengguna mengisi kata laluan baharu dan mengesahkan kata laluan serta memerlukan

dan

parameter untuk mengesahkan sama ada pautan set semula adalah sah. Parameter ini tersedia dalam
<form method="POST" action="{{ route(&#39;password.email&#39;) }}">
    @csrf
    <div>
        <input type="email" name="email" value="{{ old(&#39;email&#39;) }}" required autofocus placeholder="请输入您的邮箱地址">
    </div>
    <div>
        <button type="submit">发送重置密码链接</button>
    </div>
</form>
.

Logik pengawal

<form method="POST" action="{{ route(&#39;password.update&#39;) }}" >
    @csrf
    <input type="hidden" name="token" value="{{ $token }}">
    <div>
        <label for="email-input">邮箱</label>
        <input type="email" name="email" value="{{ $email ?? old(&#39;email&#39;) }}" required autofocus>
    </div>
    <div>
        <label for="password-input">新密码</label>
        <input type="password" name="password" required>
    </div>
    <div>
        <label for="password-confirm-input">确认新密码</label>
        <input type="password" name="password_confirmation" required>
    </div>
    <div>
        <button type="submit">重置密码</button>
    </div>
</form>

Kami menggunakan dua pengawal dalam penghalaan untuk mengendalikan operasi tetapan semula kata laluan, iaitu $token dan $email. ResetPasswordController@showResetForm

menyediakan kaedah untuk memaparkan borang untuk pengguna mengisi alamat e-mel mereka. Kaedah lain akan menghantar e-mel yang mengandungi pautan tetapan semula kata laluan ke alamat e-mel yang diberikan oleh pengguna, di mana kaedah

digunakan untuk mengendalikan penjanaan dan penghantaran pautan tetapan semula. Kaedah

dalam ForgotPasswordControllerResetPasswordController

akan memaparkan borang untuk pengguna memasukkan kata laluan baharu Jika pautan tetapan semula adalah menyalahi undang-undang, ia akan kembali ke halaman gesaan tamat tempoh pautan e-mel. Kaedah

mengendalikan logik pengguna mengisi borang tetapan semula kata laluan dan menyerahkannya Kaedah ForgotPasswordController digunakan untuk mengemas kini kata laluan pengguna ke pangkalan data. showLinkRequestForm()sendResetLinkEmail()Password::sendResetLink()

Menggunakan fungsi tetapan semula kata laluan

ResetPasswordControllershowResetForm()Sekarang kita telah menyelesaikan pelaksanaan fungsi tetapan semula kata laluan dalam Laravel, mari cuba gunakan fungsi yang dilaksanakan Untuk menetapkan semula kata laluan anda: reset()Password::reset()

Buka halaman log masuk aplikasi dan klik Terlupa kata laluan; Buka e-mel anda, cari dan klik pautan tetapan semula kata laluan;
use Illuminate\Support\Facades\Password;

class ForgotPasswordController extends Controller
{
    use SendsPasswordResetEmails;
}

class ResetPasswordController extends Controller
{
    use ResetsPasswords;

    protected $redirectTo = '/home';

    public function showResetForm(Request $request, $token = null)
    {
        return view('auth.passwords.reset')->with(
            ['token' => $token, 'email' => $request->email]
        );
    }
}

Masukkan kata laluan baharu anda dan sahkan kata laluan baharu;

Jika semuanya berjalan lancar, kata laluan anda telah berjaya ditetapkan semula!

    Ringkasan
  1. Dalam artikel ini, kami memperkenalkan cara menggunakan Laravel untuk melaksanakan fungsi tetapan semula kata laluan asas. Dalam aplikasi web moden, tetapan semula kata laluan adalah fungsi yang diperlukan Hanya proses tetapan semula kata laluan yang direka bentuk dan dilaksanakan dengan baik boleh memastikan keselamatan akaun pengguna dan pengalaman pengguna. Saya percaya bahawa selepas anda mempelajari teknik yang diterangkan dalam artikel ini dan melaksanakan fungsi tetapan semula kata laluan yang lengkap, keselamatan kata laluan pengguna dan pengalaman pengguna akan dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi tetapan semula kata laluan dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn