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

2018-09-22 00:54

阅读:526

  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

   <?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.定义后台路由

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

   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 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 => requiredmax:255, email => requiredemailmax:255unique:admins, password => requiredconfirmedmin:6, ]); } protected function create(array $data) { return Admin::create([ name => $data[name], email => $data[email], password => bcrypt($data[password]), ]); } }

  AdminController.php

   <?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

   <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

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

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


评论


亲,登录后才可以留言!