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


Posted in PHP onJanuary 11, 2017

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

PHP 相关文章推荐
一家之言的经验之谈php+mysql扎实个人基本功
Mar 27 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
php常量详细解析
Oct 27 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
php实现的二分查找算法示例
Jun 20 PHP
Laravel模糊查询区分大小写的实例
Sep 29 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 #PHP
php实现36进制与10进制转换功能示例
Jan 10 #PHP
php获取当前url地址的方法小结
Jan 10 #PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 #PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 #PHP
php 访问oracle 存储过程实例详解
Jan 08 #PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 #PHP
You might like
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
php jsonp单引号转义
2014/11/23 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
跟单文员岗位职责
2014/01/03 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
忠诚教育心得体会
2014/09/03 职场文书
寒山寺导游词
2015/02/03 职场文书
劳资员岗位职责
2015/02/13 职场文书
预备党员党支部意见
2015/06/02 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL