Laravelログイン再構築
6365 ワード
Laravelを使用してバックグラウンドコンテンツ管理システムを構築する必要がありますが、laravelのデフォルトのログイン登録が現在のニーズを満たすことができなければ、まずメールボックスで登録する必要はありません.ユーザー名などを直接使用してログインや携帯電話番号を使用することもできます.
1.登録ルートの確定
まず、デフォルトのログインルートを見つけなければなりません.そうすれば、ログイン方法のデフォルトのログインルートを直接書き換えることができます.デフォルトのログインルートは、マニュアルで見つけることができます.そうでなければ、
2.ログインページを表示
これは
3.登録を求める
これは
4.モデルの変更
laravelの公式ドキュメントによると、検証するには
必要に応じて自分と同じデータテーブル名に変更
5.書き換え方法と認証ユーザー
上のように、私のユーザーデータテーブルのユーザー名とパスワードフィールドは「username」と「password」フィールドに対応しています.もし誰かが聞いたら、もし私のユーザー名が1つのフィールド以上でなければ、どうすればいいですか.例えば、emailとphoneの2つのフィールドがユーザー名で、ログインできます.どうすればいいですか.認証例は2回使用できます.
実は、このような使用は全くお勧めしません.前に判断して、どの認証を使うかを決めることができます.
6.認証失敗の返却
上の例は成功例を示していますが、認証に失敗したら?例えば、ユーザー名が正しくなく、パスワードが正しくありません.どうやって返しますか?2つの方法があります.1つ目は
7.フロントエンド表示エラーメッセージ
私たちは補助関数を使用してエラーを返すので、私たちが受信すると補助関数も使用してデータを受信します.ここでは
8.完了後の例
AuthController
login.blade
Auth::attemptがユーザを認証した後、他のページで
原文リンク:デニス`s blog
1.登録ルートの確定
まず、デフォルトのログインルートを見つけなければなりません.そうすれば、ログイン方法のデフォルトのログインルートを直接書き換えることができます.デフォルトのログインルートは、マニュアルで見つけることができます.そうでなければ、
\auth\login
を直接入力してから、login
とAuth\AuthController@getLogin
にアクセスする方法があります.1つはログインページgetリクエストを表示し、1つはログイン使用を要求するpostリクエストですが、このcontrollerを表示すると、この方法が見つからないことに気づきます.これは、この方法が他の場所で実装されているため、現在のところ、どのように実装されているかを議論する必要はありません.興味のあるソースコードを確認することができます.2.ログインページを表示
これは
Auth\AuthController@postLogin
という方法を使用していますが、これは実際に変更することがなければ、デフォルトのものを直接使用することができます.書き換える必要はありません.ビューファイルを見つけて、ビューファイルを変更すればいいです.一般的にgetLogin
ファイル3.登録を求める
これは
resources\views\auth\login.blade.php
という方法を使用しています.これは表名、フィールド名、フィールド、検証などを含めて、私たちの要求に合わないので、書き換える必要がある場合は、postLogin
を使用してデータを受信する方法と、request
を使用してデータを受信する方法と、Input::get
を使用してデータを取得する方法の2つの方法があります.Requestの場合はuse Illuminate\Http\Request
クラスInputを導入する必要がある場合はuse Input
クラスを導入する必要がありますここではPHPの新しい特性なのでrequestをお勧めします.またRequestクラスで受信する場合は、パラメータにRequest $request
を書き込む必要があります4.モデルの変更
laravelの公式ドキュメントによると、検証するには
App\User
クラスが使用されています.ユーザーテーブルやフィールドがmodelと異なる場合は、変更が必要です(ここで説明しますが、変更しなくてもいいです.session
の方法でユーザー情報をsessionに保存する必要があります.Userを変更するメリットは、laravel内蔵の方法を使用することができます)変更の面では、主にテーブル名、プライマリ・キー、どのフィールドに値を割り当てることができますか.私の例です.
必要に応じて自分と同じデータテーブル名に変更
5.書き換え方法と認証ユーザー
postLogin
のメソッド認証を書き換える場合は、laravelが提供するAuth::attempt(['email' => $email, 'password' => $password])
のメソッドを使用して認証を行うことができます.メソッドの「email」と「password」の2つの名前を、あなたのデータベースのフィールド名と同じフィールド名(すなわち、ユーザー名とパスワードフィールド)に変更します.Auth::attempt(['username' => $name, 'password' => $password])
上のように、私のユーザーデータテーブルのユーザー名とパスワードフィールドは「username」と「password」フィールドに対応しています.もし誰かが聞いたら、もし私のユーザー名が1つのフィールド以上でなければ、どうすればいいですか.例えば、emailとphoneの2つのフィールドがユーザー名で、ログインできます.どうすればいいですか.認証例は2回使用できます.
if (Auth::attempt(['email' => $name, 'password' => $password], 1)) {
return redirect()->intended('/');
} else if (Auth::attempt(['phone' => $name, 'password' => $password], 1)) {
return redirect()->intended('/');
}
実は、このような使用は全くお勧めしません.前に判断して、どの認証を使うかを決めることができます.
6.認証失敗の返却
上の例は成功例を示していますが、認証に失敗したら?例えば、ユーザー名が正しくなく、パスワードが正しくありません.どうやって返しますか?2つの方法があります.1つ目は
Validator
クラスを使用して入力されたデータを検証し、エラー情報を返すことです.もう1つは補助関数を使用してここを完了します.ここはログインなので、特に検証する必要はありません.だから、補助関数を使用して例を完成します.redirect('login')->withInput($request->except('password'))->with('msg', ' ');
redirect
はどのページにリダイレクトするかを示すwithInput
はリダイレクト後に格納された使い捨てデータを示し、ここではユーザが入力したデータを過去のexcept
メソッドに戻して指定キーを除いたすべての集合項目を返すことを示し、ここでは戻ったデータの中のパスワード項目をwith
削除した使い捨てセッションリダイレクト付きデータに与える7.フロントエンド表示エラーメッセージ
私たちは補助関数を使用してエラーを返すので、私たちが受信すると補助関数も使用してデータを受信します.ここでは
session
方法を使用してこのエラーを受信します.old('username')
を使用して前回出力したデータを受信します.8.完了後の例
AuthController
public function postLogin(Request $request)
{
$name = $request->input('username');
$password = $request->input('password');
if( empty($remember)) { //remember
$remember = 0;
} else {
$remember = $request->input('remember');
}
// , remember_token
if (Auth::attempt(['username' => $name, 'password' => $password], $remember)) {
return redirect()->intended('/');
}
return redirect('login')->withInput($request->except('password'))->with('msg', ' ');
}
login.blade
Auth::attemptがユーザを認証した後、他のページで
Auth::user()
を使用してユーザ情報が取得されなければ、App\User
が正しく構成されていない可能性が高い原文リンク:デニス`s blog