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 array_map()数组函数使用说明
Jul 12 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
YII2框架使用控制台命令的方法分析
Mar 18 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操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
高中生自我评价个人范文
2013/11/09 职场文书
英语演讲稿范文
2014/01/03 职场文书
小学音乐教学反思
2014/02/05 职场文书
五四青年节的活动方案
2014/08/20 职场文书
领导班子对照检查材料
2014/09/22 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
《比的意义》教学反思
2016/02/18 职场文书
会议主持词通用版
2019/04/02 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers