最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
laravel5.2实现区分前后台用户登录的方法
时间:2017-01-11 编辑:简简单单 来源:一聚教程网
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
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
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'))
@else {{ Auth::guard('admin')->user()->name }}
@endif
|
现在试一下前后台分别登录吧!
7.可能遇到的页面跳转问题
如果你遇到了这种情况可以尝试修改一下Middleware\Authenticate.php
returnredirect()->guest($guard.'/login'); |
相关文章
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31
- Laravel实现登录跳转功能解析 10-31
- php双向队列解读 10-31
- Laravel异常上下文解决教程 10-24
- php数组查询元素位置方法介绍 10-24