1.前台登录
直接使用laravel自带的auth
1
|
php artisan make:auth
|
然后可以查看路由文件:
1
2
3
4
|
Route::group([ 'middleware' => 'web' ], function () {
Route::auth();
Route::get( '/home' , 'HomeController@index' );
});
|
执行php artisan migrate
会发现生成了两张表。
2.后台登录
编辑配置文件
config\auth.php
添加guards中的admin和providers中的admins
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?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.创建数据模型
执行php artisan make:model Admin --migration
然后修改database\migrations中的数据表结构,复制user表的就可以
执行php artisan migrate 会发现生成了admin表
4.定义后台路由
这里我直接定义了一个路由组
1
2
3
4
5
6
7
8
|
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.创建控制器
执行
1
2
|
php artisan make:controller Admin/AuthController
php artisan make:controller Admin/AdminController
|
AuthController.php可参照Auth中的AuthController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/admin' ;
protected $guard = 'admin' ;
protected $loginView = 'admin.login' ;
protected $registerView = 'admin.register' ;
public function __construct()
{
$this ->middleware( 'guest:admin' , [ 'except' => 'logout' ]);
}
protected function validator( array $data )
{
return Validator::make( $data , [
'name' => 'required|max:255' ,
'email' => 'required|email|max:255|unique:admins' ,
'password' => 'required|confirmed|min:6' ,
]);
}
protected function create( array $data )
{
return Admin::create([
'name' => $data [ 'name' ],
'email' => $data [ 'email' ],
'password' => bcrypt( $data [ 'password' ]),
]);
}
}
|
AdminController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
class AdminController extends Controller
{
public function __construct()
{
$this ->middleware( 'auth:admin' );
}
public function index()
{
$admin = Auth::guard( 'admin' )->user();
return view( 'admin.home' );
}
}
|
6.创建视图
这里直接复制auth中的视图和home.blade.php到一个新的admin文件夹中。
修改login和register中表单的action,添加上admin前缀
修改layouts中的app.blade.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<ul class = "nav navbar-nav navbar-right" >
<!-- Authentication Links -->
@ if (Auth::guest( 'admin' ))
<li><a href= "{{ url('/login') }}" >Login</a></li>
<li><a href= "{{ url('/register') }}" >Register</a></li>
@ else
<li class = "dropdown" >
<a href= "#" class = "dropdown-toggle" data-toggle= "dropdown" role= "button" aria-expanded= "false" >
{{ Auth::guard( 'admin' )->user()->name }} <span class = "caret" ></span>
</a>
<ul class = "dropdown-menu" role= "menu" >
<li><a href= "{{ url('/admin/logout') }}" ><i class = "fa fa-btn fa-sign-out" ></i>Logout</a></li>
</ul>
</li>
@ endif
</ul>
|
现在试一下前后台分别登录吧!
7.可能遇到的页面跳转问题
如果你遇到了这种情况可以尝试修改一下Middleware\Authenticate.php
1
|
return redirect()->guest( $guard . '/login' );
|
以上所述是小编给大家介绍的laravel5.2实现区分前后台用户登录的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://blog.csdn.net/sinat_21125451/article/details/54316112