set semula kata laluan
Nota Pangkalan Data
Mula-mula, sahkan bahawa model AppUser
anda melaksanakan kontrak IlluminateContractsAuthCanResetPassword
. Sudah tentu, model AppUser
yang disertakan dalam rangka kerja sudah melaksanakan antara muka ini dan menggunakan ciri IlluminateAuthPasswordsCanResetPassword
untuk memasukkan kaedah yang diperlukan untuk melaksanakannya. AppUser
模型是否实现了 IlluminateContractsAuthCanResetPassword
契约。当然,框架中包含的 AppUser
模型已经实现了该接口,并且使用了 IlluminateAuthPasswordsCanResetPassword
trait t 来包含实现该接口所需的方法。
生成重置令牌的表迁移
接下来,必须创建一张数据表来存储密码重置令牌。该数据表的迁移已包含在 Laravel 应用的 database/migrations
目录中。 所以,你需要做的只是执行数据库迁移命令:
php artisan migrate
路由
Laravel 已在 AuthForgotPasswordController
和 AuthResetPasswordController
类中包含了发送密码重置链接电子邮件和重置用户密码的逻辑。所有执行密码重置所需的路由可以使用 Artisan 命令 make:auth
来生成:
php artisan make:auth
视图
当执行 make:auth
命令时,Laravel 会生成重置密码所需的所有视图。 这些视图位于 resources/views/auth/passwords
目录中。你可以根据你应用的需要随意修改这些视图。
重置密码后
一旦你定义了重置用户密码的路由和视图,你可以在浏览器中访问 /password/reset
这个路由来重置密码。框架中的 ForgotPasswordController
已包含发送密码重置链接电子邮件的逻辑,同时 ResetPasswordController
包含了重置用户密码的逻辑。
在重置密码后,用户将会自动登录并重定向到 /home
。 你可以通过在 ResetPasswordController
中定义一个 redirectTo
属性来自定义密码重置后重定向的位置:
protected $redirectTo = '/dashboard';
{note} 默认情况下,密码重置令牌会在一小时后过期。你可以通过
config/auth.php
文件中的密码重置expire
选项对此进行修改。
自定义
自定义身份验证看守器
在你的 auth.php
配置文件中,你可以配置多个「看守器」,可以用来定义多个用户表的身份验证行为。你可以自定义框架中的 ResetPasswordController
,通过重写该控制器中的 guard
Penghijrahan jadual untuk menjana token tetapan semula
database/migration
aplikasi Laravel. Jadi, apa yang anda perlu lakukan ialah melaksanakan perintah pemindahan pangkalan data: use Illuminate\Support\Facades\Auth;protected function guard(){ return Auth::guard('guard-name'); }🎜🎜
AuthForgotPasswordController
dan AuthResetPasswordController
. Semua laluan yang diperlukan untuk melakukan penetapan semula kata laluan boleh dijana menggunakan perintah Artisan make:auth
: 🎜use Illuminate\Support\Facades\Password; /** * 获取在密码重置期间使用的代理。 * * @return PasswordBroker */ protected function broker(){ return Password::broker('name'); }🎜🎜
make:auth
, Laravel akan menjana semua pandangan yang diperlukan untuk menetapkan semula kata laluan anda. Paparan ini terdapat dalam direktori resources/views/auth/passwords
. Anda bebas untuk mengubah suai pandangan ini mengikut keperluan aplikasi anda. 🎜🎜🎜/password/reset
dalam penyemak imbas untuk menetapkan semula kata laluan anda. ForgotPasswordController
dalam rangka kerja sudah mengandungi logik untuk menghantar e-mel pautan tetapan semula kata laluan, manakala ResetPasswordController
mengandungi logik untuk menetapkan semula kata laluan pengguna. 🎜🎜Selepas menetapkan semula kata laluan, pengguna akan log masuk secara automatik dan dialihkan ke /home
. Anda boleh menyesuaikan lokasi ubah hala selepas penetapan semula kata laluan dengan mentakrifkan atribut redirectTo
dalam ResetPasswordController
: 🎜/** * 发送密码重置通知。 * * @param string $token * @return void */ public function sendPasswordResetNotification($token){ $this->notify(new ResetPasswordNotification($token)); }
🎜{note} Secara lalai, tetapan semula kata laluan Token konfigurasi akan tamat tempoh selepas satu jam. Anda boleh mengubah suai ini melalui pilihan tetapan semula kata laluan🎜🎜expire
dalam failconfig/auth.php
. 🎜
Pemerhati pengesahan tersuai
🎜Dalam fail konfigurasiauth.php
anda, anda boleh mengkonfigurasi berbilang "pemerhati", anda boleh gunakan untuk menentukan tingkah laku pengesahan untuk berbilang pengguna meja. Anda boleh menyesuaikan ResetPasswordController
dalam rangka kerja untuk menggunakan pengawal pilihan anda dengan mengatasi kaedah guard
dalam pengawal. Kaedah ini sepatutnya mengembalikan contoh pengawal: 🎜rrreee🎜🎜Proksi Kata Laluan Tersuai
Dalam fail konfigurasi auth.php
anda, anda boleh mengkonfigurasi berbilang "proksi" kata laluan yang boleh digunakan untuk menetapkan semula kata laluan pada berbilang jadual pengguna. Anda boleh menyesuaikan ForgotPasswordController
dan ResetPasswordController
dalam rangka kerja dan menggunakan broker pilihan anda dengan mengatasi kaedah broker
dalam pengawal: auth.php
配置文件中,你可以配置多个密码「代理」,可以用来重置多个用户表上的密码。你可以自定义框架中的 ForgotPasswordController
和 ResetPasswordController
, 通过重写控制器中的 broker
方法来使用你所选择的代理:
自定义密码重置邮件
你可以轻松地修改用于向用户发送密码重置链接的通知类。首先,重写 User
模型中的 sendPasswordResetNotification
方法。 在此方法中,你可以使用任何你所选择的通知类来发送通知。该方法接收的第一个参数是密码重置令牌 $token
rrreee