Laravel登録再構築
11032 ワード
Laravelを使用してバックグラウンドコンテンツ管理システムを構築する必要がありますが、laravelのデフォルトのログイン登録が現在のニーズを満たすことができない場合は、バックグラウンドで使用され、メールボックスで登録する必要がなく、登録時に一緒に記入する必要がある追加の構成があります.
1.まず、ユーザ登録の経路を決定する
私たちはlaravelをインストールするときにデフォルトで生成された登録はメールボックスで登録されています.また、いくつかのオプションは必要ありません.いくつかのフォームオプションを追加する必要があります.私たちが登録する必要がある場合は、勝手に登録することはできません.いくつかのスーパー管理者だけが登録を行うことができます.まず、前回作成した
2.登録アカウントページを表示する
これは
3.アカウントの登録を要求する
これは
4.完了後の例
UserController
register.blade
5.ミドルウェア--ユーザーはログインする必要があります
今登録が完了したので、ユーザーの判断が悪くなりました.登録する必要があるアカウントは、スーパー管理者権限のあるアカウントでなければ登録できません.この場合、
このミドルウェアの機能は,ルーティングが発生した場合,まず
登録して、使えます
PS:ログインページを除外するなど、グローバルを定義する場合は特に注意してください.そうしないと、ユーザーがログインしていないため、どのページでもログインページにリダイレクトされます.もちろん、ログインページも含まれます.
5.ミドルウェア--特別なページでユーザーグループを検証する必要がある
ユーザー権限ページの制限を行います.同様に、
ここでは,
コントローラ内での使用
ここでは、ルーティングにミドルウェアを追加することを選択します.登録ページはスーパーアドミニストレータのみで登録できます
私たちは現在2つのルートしか判断できないので、チェーン式の書き方を使っています.もちろん、マニュアルに従ってグループを使うこともできます.グループのやり方はもっと優雅です.
もちろん、コントローラ全体のメソッドに検証フィルタリングが必要な場合は、グループの形式を作成したり、コントローラ内で
原文リンク:デニス`s blog
1.まず、ユーザ登録の経路を決定する
私たちはlaravelをインストールするときにデフォルトで生成された登録はメールボックスで登録されています.また、いくつかのオプションは必要ありません.いくつかのフォームオプションを追加する必要があります.私たちが登録する必要がある場合は、勝手に登録することはできません.いくつかのスーパー管理者だけが登録を行うことができます.まず、前回作成した
UserController
を使用して構成します.もしなければ、php artisan make:controller UserController
を使用してコントローラクラスを作成し、2つのルーティングRoute::get('register', 'UserController@getRegister')
およびRoute::post('register', 'UserController@postRegister')
を作成することができます.前者は、登録されたページget要求を表示し、後にアカウントを登録するpost要求を表示します.2.登録アカウントページを表示する
これは
getRegister
という方法を用いており,この方法は1つのビューを表示するだけで特に論理的ではない. public function getRegister()
{
return view('auth.register');
}
3.アカウントの登録を要求する
これは
postRegister
という方法でアカウントを登録するとパスワードをリセットするのと同じで、登録アカウントよりも簡単です.データベースにユーザーレコードを挿入するときは、User::create($data)
を使用して挿入できます.$data
は配列で、各フィールドのキーと値が格納されています. public function postRegister(Request $request)
{
$rules = [
'username'=>'required|unique:finance_enewsuser',
'password' => 'required|between:6,20|confirmed'
];
$messages = [
'required'=>':attribute ',
'unique'=>' ',
'between' => ' 6~20 ',
'confirmed' => ' '
];
$username = $request->input('username');
$password = $request->input('password');
$group = $request->input('group');
$data = $request->all();
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
return back()->withErrors($validator);
}
$data = [
'username' => $username,
'password' => bcrypt($password),
'groupid' => $group,
'checked' => 0,
'styleid' => 1,
'filelevel' => 0,
'loginnum' => 0,
'lasttime' => time(),
'lastip' => '127.0.0.1',
'truename' => '',
'email' => '',
'pretime' => time(),
'preip' => '127.0.0.1',
];
User::create($data); // ,
// , $user = User::create($data); Auth::login($user);
return redirect('/');
}
4.完了後の例
UserController
public function getRegister()
{
return view('auth.register');
}
public function postRegister(Request $request)
{
$rules = [
'username'=>'required|unique:finance_enewsuser',
'password' => 'required|between:6,20|confirmed'
];
$messages = [
'required'=>':attribute ',
'unique'=>' ',
'between' => ' 6~20 ',
'confirmed' => ' '
];
$username = $request->input('username');
$password = $request->input('password');
$group = $request->input('group');
$data = $request->all();
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
return back()->withErrors($validator);
}
$data = [
'username' => $username,
'password' => bcrypt($password),
'groupid' => $group,
'checked' => 0,
'styleid' => 1,
'filelevel' => 0,
'loginnum' => 0,
'lasttime' => time(),
'lastip' => '127.0.0.1',
'truename' => '',
'email' => '',
'pretime' => time(),
'preip' => '127.0.0.1',
];
User::create($data); // ,
return redirect('/');
}
register.blade
5.ミドルウェア--ユーザーはログインする必要があります
今登録が完了したので、ユーザーの判断が悪くなりました.登録する必要があるアカウントは、スーパー管理者権限のあるアカウントでなければ登録できません.この場合、
postRegister
の方法でユーザーの情報を直接検出し、ユーザーがこの権限を満たしているかどうかを確認し、満たされていない場合は他のページにジャンプします.この方法は可能ですが、スーパー管理者と管理者の権限区分がある以上、1つの場所だけでなく、他の場所でも使用されるに違いありません.そしてmodelにメソッドを書くことを考えている人がいて、後で必要があれば直接呼び出すことができます.この方法も可能ですが、laravelが提供するミドルウェアという機能をお勧めします.この機能は非常に強く、非常に使いやすいです.ミドルウェアという機能を使用します.バックグラウンドコンテンツ管理システムなので、まずミドルウェアを作成します.機能は、すべてのページが入る前に、ログイン状態でなければなりません.そうしないと、ログインページにジャンプします.マニュアルを見ると、php artisan make:middleware CheckLoginMiddleware
コマンドを使用してミドルウェアを作成することができます.もちろん、ほとんどのファイルをコピーしても、変更しても同じです.app/Http/Middleware/
ディレクトリの下にCheckLoginMiddleware
ミドルウェアファイルが作成されます.handle()
メソッドは1つしかありません.私たちは直接機能を追加します. is('login') URL
// , , ,
// /login, /auth/login , $request->is('auth/login')
// ,
$response = $next($request);
if (!Auth::check() && !$request->is('login')) {
return redirect('/login');
}
return $response;
}
}
このミドルウェアの機能は,ルーティングが発生した場合,まず
Auth::check()
を用いてユーザがログインしているか否かを判断し,ログインしていない場合はログインページにジャンプすることである.方法は書き終わりましたが、まだ使えません.私たちはこのミドルウェアを登録して、フレームワークにこのミドルウェアが書き終わったことを教えて、使えます.使用範囲はどこですか.app/Http/
ディレクトリの下にKernel.php
ファイルがこのミドルウェアを登録しています.つまり、フレームワークに教えて、私たちはこのミドルウェアを書きました.Kernel.php
ファイルには2つの配列属性があり、1つの$middleware
はグローバル使用を表し、1つの$routeMiddleware
は選択可能使用を表す.グローバルに使用すると、どのページを要求しても、このミドルウェアが先に実行されます.使用表示を選択し、どのHTTPリクエストが必要なのか、ミドルウェアを実行する必要があるのか、どこで実行するのかを選択します.ここで各ページにログインが必要な場合は、グローバルに登録し、$middleware
配列のプロパティに1つ追加することができます.\App\Http\Middleware\CheckLoginMiddleware::class
登録して、使えます
PS:ログインページを除外するなど、グローバルを定義する場合は特に注意してください.そうしないと、ユーザーがログインしていないため、どのページでもログインページにリダイレクトされます.もちろん、ログインページも含まれます.
5.ミドルウェア--特別なページでユーザーグループを検証する必要がある
ユーザー権限ページの制限を行います.同様に、
php artisan make:middleware CheckGroupMiddleware
を使用して新しいミドルウェアを作成し、このユーザーがこの権限を満たしているかどうかを判断するために、ミドルウェアを再作成します. groupid != 1) {
return redirect('/');
}
return $next($request);
}
}
ここでは,
Auth::user()
によりユーザの情報を取得し,ユーザのグループに属していないと判断してトップページにジャンプする.次に、app/Http/
ディレクトリの下にKernel.php
ファイルがこのミドルウェアに登録されています.今回は選択可能なミドルウェアに登録します.このミドルウェアは選択可能なので、$routeMiddleware
配列の属性に別名を付ける必要があります. 'user.group' => \App\Http\Middleware\CheckGroupMiddleware::class
usergroup
という名前で使用できるミドルウェアを作成します.作成後、router.php
のルーティングファイルに追加され、controllerでrouter.php
のファイルで使用される場所を選択できます. Route::get('/', ['middleware' => ['user.group'], function () {
//
}]);
コントローラ内での使用
$this->middleware('user.group');
ここでは、ルーティングにミドルウェアを追加することを選択します.登録ページはスーパーアドミニストレータのみで登録できます
Route::get('register', 'UserController@getRegister')->middleware('user.group');
Route::post('register', 'UserController@postRegister')->middleware('user.group');
私たちは現在2つのルートしか判断できないので、チェーン式の書き方を使っています.もちろん、マニュアルに従ってグループを使うこともできます.グループのやり方はもっと優雅です.
もちろん、コントローラ全体のメソッドに検証フィルタリングが必要な場合は、グループの形式を作成したり、コントローラ内で
__construct
メソッドを直接使用したりして、このコントローラを要求するたびに、ミドルウェアを先に実行することもできます. class MyController extends Controller
{
public function __construct()
{
$this->middleware('user.group');
}
public function index()
{
return view('my.index');
}
}
原文リンク:デニス`s blog