当前位置:首页 > PHP教程 > PHP常见问题

laravel5.2实现区分前后台用户登录的方法

1.前台登录

直接使用laravel自带的auth

php artisan make:auth

然后可以查看路由文件:

route::group(['middleware' => 'web'], function () { route::auth(); route::get('/home', 'homecontroller@index'); });

执行php artisan migrate

会发现生成了两张表。

2.后台登录

编辑配置文件

configauth.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' => appuser::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => appadmin::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'email' => 'auth.emails.password', 'table' => 'password_resets', 'expire' => 60, ], ], ];

3.创建数据模型

执行php artisan make:model admin --migration

然后修改databasemigrations中的数据表结构,复制user表的就可以

执行php artisan migrate 会发现生成了admin表

4.定义后台路由

这里我直接定义了一个路由组

route::group(['prefix' => 'admin' ,'middleware' => 'admin'], function () { route::get('login', 'adminauthcontroller@getlogin'); route::post('login', 'adminauthcontroller@postlogin'); route::get('register', 'adminauthcontroller@getregister'); route::post('register', 'adminauthcontroller@postregister'); route::get('logout', 'adminauthcontroller@logout'); route::get('/', 'adminadmincontroller@index'); });

5.创建控制器

执行

php artisan make:controller admin/authcontroller php artisan make:controller admin/admincontroller

authcontroller.php可参照auth中的authcontroller.php

<?php namespace apphttpcontrollersadmin; use appadmin; use validator; use apphttpcontrollerscontroller; use illuminatefoundationauththrottleslogins; use illuminatefoundationauthauthenticatesandregistersusers; 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

<?php namespace apphttpcontrollersadmin; use illuminatehttprequest; use apphttprequests; use apphttpcontrollerscontroller; 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

<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.可能遇到的页面跳转问题

如果你遇到了这种情况可以尝试修改一下middlewareauthenticate.php

return redirect()->guest($guard.'/login');

以上所述是小编给大家介绍的laravel5.2实现区分前后台用户登录的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对硕编程网站的支持!



【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐