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无限分类的深入理解
Jun 02 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
php获取操作系统语言代码
Nov 04 PHP
php实现中文字符截取防乱码方法汇总
Apr 29 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
日期 时间js控件
2009/05/07 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
js实现文字滚动效果
2016/03/03 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
出纳岗位职责模板
2013/11/27 职场文书
女娲补天教学反思
2014/02/05 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
2014年网管工作总结
2014/12/11 职场文书