私は、userとadminの2種類のログインフォームを用意しています。私が望むのは、ユーザーが自分のフォームでログインするだけで、それ以外の場合はエラーで、管理フォームでは同じでなければなりません。Laravel:ADMINとUSERのセキュリティ
私のデータベースには、userとadminの両方に1つのテーブルしかありません。彼らは明らかに "admin"と "user"であるuser_typeが異なるだけです
私がやっているのは、ユーザーが管理ログインフォームにログインしようとしたときです。「あなたはこの管理者ではありませんサイト'。しかし、それはユーザーがまだログインしていることを意味します。
私が欲しいのは、管理者のフォームでログインしようとしたときに、システムにアクセスしたくないということです。
ここでは、これまでに私のコード:
public function validateLoginResort(Request $requests){
$username = $requests->username;
$password = $requests->password;
$attempt = Auth::attempt([
'email' => $requests->username,
'password' => $requests->password,
]);
if(Auth::check()){
if(Auth::user()->type_user == 'admin'){
return redirect('home');
}
else{
Auth::logout();
return redirect('login');
}
}else{
return "Invalid input";
}
}
ユーザーが管理者でない場合、私はAuth::logout
を使用してみましたが、私はそれが安全と右のすべてであると思ういけません。
これを行うにはまだまだ良い方法があると思いますが、これを正しく実装する方法についての提案はありますか?ありがとう
あなたはミドルウェア –
内のコードをチェックし、ユーザーの役割を記述する必要がありますあなたは私与えることができます例? – JaneTho
あなたは[middlewares](https://laravel.com/docs/5.4/middleware#introduction)を使うこともできますし、 'Auth :: attempt'の前に電子メールでユーザを見つけて、そのタイプが" admin "であるかどうかを確認することもできますそれは、 '試み'を使用して、それから 'check'それ以外の場合、ユーザーをリダイレクトします – Maraboc