首页 > 语言 > PHP > 正文

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

2024-05-04 23:54:21
字体:
来源:转载
供稿:网友

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

<?phpreturn [ '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/AuthControllerphp artisan make:controller Admin/AdminController

AuthController.php可参照Auth中的AuthController.php

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

<?phpnamespace 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实现区分前后台用户登录的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选