1.前台登录
直接使用laravel自带的auth
php artisan make:auth
然后可以查看路由文件:
- Route::group(['middleware'=>'web'],function() {
- Route::auth();
- Route::get('/home','HomeController@index');
- });
执行php artisan migrate
会发现生成了两张表。
2.后台登录
编辑配置文件 config/auth.php 添加guards中的admin和providers中的admins
- return[
- 'defaults'=> [
- 'guard'=>'web',
- 'passwords'=>'users',
- ],
- 'guards'=> [
- 'web'=> [
- 'driver'=>'session',
- 'provider'=>'users',
- ],
- 'admin'=> [
- 'driver'=>'session',
- 'provider'=>'admins',
- ],
- 'api'=> [
- 'driver'=>'token',
- 'provider'=>'users',
- ],
- ],
- 'providers'=> [
- 'users'=> [
- 'driver'=>'eloquent',
- 'model'=> App/User::class,
- ],
- 'admins'=> [
- 'driver'=>'eloquent',
- 'model'=> App/Admin::class,
- ],
- ],
- 'passwords'=> [
- 'users'=> [
- 'provider'=>'users',
- 'email'=>'auth.emails.password',
- 'table'=>'password_resets',
- 'expire'=> 60,
- ],
- ],
- ];
3.创建数据模型
执行php artisan make:model Admin --migration
然后修改database/migrations中的数据表结构,复制user表的就可以
执行php artisan migrate 会发现生成了admin表
4.定义后台路由
这里我直接定义了一个路由组
- Route::group(['prefix'=>'admin','middleware'=>'admin'],function() {
- Route::get('login','Admin/AuthController@getLogin');
- Route::post('login','Admin/AuthController@postLogin');
- Route::get('register','Admin/AuthController@getRegister');
- Route::post('register','Admin/AuthController@postRegister');
- Route::get('logout','Admin/AuthController@logout');
- Route::get('/','Admin/AdminController@index');
- });
5.创建控制器
执行:
php artisan make:controller Admin/AuthController
php artisan make:controller Admin/AdminController
AuthController.php可参照Auth中的AuthController.php
- <?php
- namespaceApp/Http/Controllers/Admin;
- useApp/Admin;
- useValidator;
- useApp/Http/Controllers/Controller;
- useIlluminate/Foundation/Auth/ThrottlesLogins;
- useIlluminate/Foundation/Auth/AuthenticatesAndRegistersUsers;
- classAuthControllerextendsController
- {
- useAuthenticatesAndRegistersUsers, ThrottlesLogins;
- protected$redirectTo='/admin'
- protected$guard='admin'
- protected$loginView='admin.login'
- protected$registerView='admin.register'
- publicfunction__construct()
- {
- $this->middleware('guest:admin', ['except'=>'logout']);
- }
- protectedfunctionvalidator(array$data)
- {
- returnValidator::make($data, [
- 'name'=>'required|max:255',
- 'email'=>'required|email|max:255|unique:admins',
- 'password'=>'required|confirmed|min:6',
- ]);
- }
- protectedfunctioncreate(array$data)
- {
- returnAdmin::create([
- 'name'=>$data['name'],
- 'email'=>$data['email'],
- 'password'=> bcrypt($data['password']),
- ]);
- }
- }
- AdminController.php
- <?php
- namespaceApp/Http/Controllers/Admin;
- useIlluminate/Http/Request;
- useApp/Http/Requests;
- useApp/Http/Controllers/Controller;
- useAuth;
- classAdminControllerextendsController
- {
- publicfunction__construct()
- {
- $this->middleware('auth:admin');
- }
- publicfunctionindex()
- {
- $admin= Auth::guard('admin')->user();
- returnview('admin.home');
- }
- }
6.创建视图
这里直接复制auth中的视图和home.blade.php到一个新的admin文件夹中。
修改login和register中表单的action,添加上admin前缀
修改layouts中的app.blade.php
- @if(Auth::guest('admin'))
- Login
- Register
- @else
- {{ Auth::guard('admin')->user()->name }}
- Logout
- @endif
现在试一下前后台分别登录吧!
7.可能遇到的页面跳转问题
如果你遇到了这种情况可以尝试修改一下Middleware/Authenticate.php
returnredirect()->guest($guard.'/login');
新闻热点
疑难解答