laravelのユーザーのパスワード変更とメールボックスの結合の詳細操作
2022-01-15 08:56:47
I. パスワードの変更
1.1 パスワード変更用コントローラの作成
コマンドを実行する
php artisan make:controller Auth/PasswordController
パスワードの変更方法を書き込んでください。
/**
* Change password
*/
public function updatePassword(Request $request) {
$request-> validate([
'old_password' => 'required|min:6|max:16',
'password' => 'required|min:6|max:16|confirmed',
], [
'old_password.required' => 'old_password cannot be empty',
'old_password.min' => 'Old password must be at least 6 characters',
'old_password.max' => 'old password can be up to 16 characters',
]);
// old password
$old_password = $request-> input('old_password');
// user instance
$user = auth('api')->user();
// Verify that the old password is correct
if (!password_verify($old_password, $user->password)) {
return $this->response->errorBadRequest('old password is incorrect');
}
// Update the user password
$user->password = bcrypt($request->input('password'));
$user->save();
return $this->response->noContent();
}
画像
1.2 パスワード変更経路の作成
// Change password
$api->post('password/update', [PasswordController::class, 'updatePassword']);
画像
1.3 テスト結果
II. バインドメール
2.1 バインディングメールボックスコントローラ
コマンドを実行する
php artisan make:controller Auth/BindController
メールボックスをバインドするコントローラを作成する。
メール認証コードの送信とメール更新の処理関数を書き込む。
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\BaseController;
use App\Mail\SendEmailCode;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class BindController extends BaseController
{
/**
* Get the verification code of the email
*/
public function emailCode(Request $request) {
$request-> validate([
'email' => 'required|email'
]);
// Send the validation code to the email
Mail::to($request->input('email'))->queue(new SendEmailCode($request->input('email')));
return $this->response->noContent();
}
/**
* Update mailbox
*/
public function updateEmail(Request $request) {
$request-> validate([
'email' => 'required|email',
'code' => 'required'
], [
'code.required' => "Captcha cannot be empty",
]);
// verify that the code is correct
if (cache($request->input('email')) ! = $request->input('code')) {
return $this->response->errorBadRequest('Captcha or email error!') ;
}
// Update the mailbox
$user = auth('api')->user();
$user->email = $request->input('email');
$user->save();
return $this->response->noContent();
}
}
キューが変更された場合、コマンドでキューを再起動します。
sudo supervisorctl restart all
2.2 対応する経路の作成
// Send an email verification code
$api->post('email/code', [BindController::class, 'emailCode']);
// Update the mailbox
$api->post('email/update', [BindController::class, 'updateEmail']);
画像
2.3 メール送信のためのクラスを作成する
コマンドを実行する
php artisan make:mail SendEmailCode
:
画像
手紙を書く
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache;
class SendEmailCode extends Mailable
{
use Queueable, SerializesModels;
protected $email;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($eamil)
{
$this->email = $eamil;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// Generate code
$code = rand(1000, 9999);
// Get the mailbox
// use the code corresponding to the cached mailbox
Cache::put($this->email, $code, now()->addMinute(5)); // 5 minutes to expire
return $this->view('emails.send-email-code', ['code' => $code]);
}
}
画像
メール送信用のテンプレートを作成する場合。
テンプレートが書いています。
メール認証コードは {{$code}}
/{br認証コードの有効期限は5分ですので、速やかにご利用ください。
2.4 テスト結果
受信したメール認証コードはこちら側で確認することができます。
更新された入力メールが正しくないか、認証コードが正しくないかをテストする。
正しいメールアドレスと認証コードを入力すると、修正されます。
これはlaravelユーザーの変更パスワードとバインドメールボックスに関するこの記事の終わりです、より関連するlaravel変更パスワードの内容は、BinaryDevelopの以前の記事を検索してくださいまたは、次の関連記事を閲覧し続けるあなたがよりBinaryDevelopをサポートすることを願っています!。
関連
-
php generate unique uid solution 詳細
-
WeChatの小さなプログラムは、ログイン後に携帯電話番号を取得するためにThinkPHP5の承認と組み合わせます。
-
thinkphp6でmysqlの悲観的ロックを使って商品の売れ残り問題を解決するための実装
-
Thinkphpが無効化された機能をバイパスするプロジェクト
-
学生の成績を取得するためのPHPメソッド
-
Laravelで認証を使用するとトップページにジャンプする問題を解決
-
AliCloudのossファイルアップロード機能をlaravelで実装した例
-
オンデマンドアップロードを実現するLaravelフレームワーク Aliyun機能
-
PHPの===演算子が===より高速な理由について語る
-
PHPのrequire_once()関数がうまく機能しない理由の話
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン