对不同用户的访问控制 - Laravel 5.2


Access control to different users - Laravel 5.2

在我的应用程序中,我有两种类型的用户 - 管理员和教师。在我的身份验证控制器中,我有这个:

public function getLogin() {
    return view('auth.login');
}
public function postLogin('Illuminate'Http'Request $request) {
    if(Auth::attempt([
        'username' => $request->input('username'),
        'password' => $request->input('password'),
        'type' => 'admin'
    ])) {
        return redirect ('admin');
    }
    if(Auth::attempt([
        'username' => $request->input('username'),
        'password' => $request->input('password'),
        'type' => 'teacher'
    ])) {
        return redirect ('educator/account');
    }

    return redirect('login')->with('message', [
        'type' => 'danger',
        'message' => 'Грешно потребителско име или парола!'
    ]);
}
public function getLogout() {
    Auth::logout();
    return redirect('login');
}

但是当我以类型教师的用户身份登录时,如果我转到 http://localhost/school_system/public/admin 我会自动转到管理面板,而无需询问用户名和密码。我想如果我想从教师帐户转到管理面板,这发生在询问用户名和密码的情况下,我该怎么做?

我的路线:

Route::group(['middleware' => ['auth']
], function () {
    Route::group([
        'prefix' => 'admin',
        'namespace' => 'Admin'
    ], function () {
        Route::controller('student', 'StudentsController');
        Route::controller('profile', 'ProfilesController');
        Route::controller('class', 'ClassesController');
        Route::controller('subjects', 'SubjectsController');
        Route::controller('teacher', 'TeachersController');
        Route::controller('marktype', 'MarkTypeController');
        Route::controller('rules', 'RuleController');
        Route::get('{slug?}', 'PageController@getView');

    });
});
     Route::group(['middleware' => ['auth']
       ], function () {
           Route::group([
               'prefix' => 'educator',
              'namespace' => 'Educator'
         ], function () {
               Route::controller('account', 'AccountController');
               Route::get('{slug?}', 'EducatorController@getView');
          });
       });

谢谢^^

您可以创建一个"管理中间件": php artisan make:middleware AdminMiddleware可以使用的代码示例

if ($request->user()->type != 'admin')
{
    return redirect('home');
}

在路线上:

Route::group(['middleware' => ['admin']...

完成;)