laravel5.2实现区分前后台用户登录的方法
1.前台登录
直接使用laravel自带的auth
phpartisanmake:auth
然后可以查看路由文件:
Route::group(['middleware'=>'web'],function(){
Route::auth();
Route::get('/home','HomeController@index');
});
执行phpartisanmigrate
会发现生成了两张表。
2.后台登录
编辑配置文件
config\auth.php
添加guards中的admin和providers中的admins
<?php 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.创建数据模型
执行phpartisanmake:modelAdmin--migration
然后修改database\migrations中的数据表结构,复制user表的就可以
执行phpartisanmigrate会发现生成了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.创建控制器
执行
phpartisanmake:controllerAdmin/AuthController phpartisanmake:controllerAdmin/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
<ulclass="navnavbar-navnavbar-right">
<!--AuthenticationLinks-->
@if(Auth::guest('admin'))
<li><ahref="{{url('/login')}}">Login</a></li>
<li><ahref="{{url('/register')}}">Register</a></li>
@else
<liclass="dropdown">
<ahref="#"class="dropdown-toggle"data-toggle="dropdown"role="button"aria-expanded="false">
{{Auth::guard('admin')->user()->name}}<spanclass="caret"></span>
</a>
<ulclass="dropdown-menu"role="menu">
<li><ahref="{{url('/admin/logout')}}"><iclass="fafa-btnfa-sign-out"></i>Logout</a></li>
</ul>
</li>
@endif
</ul>
现在试一下前后台分别登录吧!
7.可能遇到的页面跳转问题
如果你遇到了这种情况可以尝试修改一下Middleware\Authenticate.php
returnredirect()->guest($guard.'/login');
以上所述是小编给大家介绍的laravel5.2实现区分前后台用户登录的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!