Laravelを初めて使用し、バージョン5.0を使用しています。Laravel 5.0、管理者およびフロントエンドのユーザー
私のウェブサイトにはフロントエンドのユーザーがおり、明らかにウェブサイトには管理者がいます。
問題管理者以外のユーザーも管理パネルにログインすることができます。
フロントエンドユーザーが管理者を入力できないようにするにはどうすればよいですか?
私は正しい方法で何かをしているかどうか、またそうでない場合は正しい方法を見てください。
マイroutes.phpのがにHomeControllerの関連部分を
public function showLogin(){
// show the form
return View('home.login');
}
public function doLogin(){
// validate the info, create rules for the inputs
$rules = array(
'email' => 'required|email', // make sure the email is an actual email
'password' => 'required|alphaNum|min:3' // password can only be alphanumeric and has to be greater than 3 characters
);
// run the validation rules on the inputs from the form
$validator = Validator::make(Input::all(), $rules);
// if the validator fails, redirect back to the form
if ($validator->fails()) {
return Redirect::to('login')
->withErrors($validator) // send back all errors to the login form
->withInput(Input::except('password')); // send back the input (not the password) so that we can repopulate the form
} else {
// create our user data for the authentication
$userdata = array(
'email' => Input::get('email'),
'password' => Input::get('password'),
'active' => '1',
'role' => 'user'
);
// attempt to do the login
if (Auth::attempt($userdata)) {
// validation successful!
// redirect them to the secure section or whatever
// return Redirect::to('secure');
// for now we'll just echo success (even though echoing in a controller is bad)
return Redirect::to('home');
} else {
// validation not successful, send back to form
return Redirect::to('login');
}
}
}//doLogin
以下の通りである。これは、私が管理者とフロント用に別のフォームを持っていることを意味し
Route::get('home', '[email protected]');
Route::get('consign', '[email protected]');
Route::post('processConsignment', '[email protected]');
Route::get('login', array('uses' => '[email protected]'));
Route::post('login', array('uses' => '[email protected]'));
Route::get('logout', array('uses' => '[email protected]'));
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
// Admin area
get('admin', function() {
return redirect('/admin/dashboard');
});
$router->group([
'namespace' => 'Admin',
'middleware' => 'auth',
], function() {
resource('admin/dashboard', 'DashboardController');
resource('admin/auction', 'AuctionController');
resource('admin/auctionlot', 'AuctionLotController');
resource('admin/video', 'VideoController');
});
// Logging in and out
get('/auth/login', 'Auth\[email protected]');
post('/auth/login', 'Auth\[email protected]');
get('/auth/logout', 'Auth\[email protected]');
以下に示します。エンドユーザー
マイUSERSテーブル構造が助けてください
CREATE TABLE IF NOT EXISTS `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`role` enum('admin','user') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'user',
`active` enum('1','0') COLLATE utf8_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
以下の通りです。
おかげで、 コッド
あなたの認証ミドルウェアは何をしますか?あなたは、ユーザーが管理者のログインフォームを使用して管理者のアクセス権を取得できること、またはユーザーが「ユーザー」としてログインして「管理者」セクションにアクセスできることを伝えていますか? – dishrex
彼らは「ユーザー」としてログインすることができ、引き続き「管理者」にアクセスできます... URLを管理するだけでなく、直接管理者にログインすることもできます...双方向を意味します – rgoyal
検証するための新しいミドルウェアを作成しますユーザーを管理者にします。 – aethergy