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模板之Phpbean的目录结构
Jan 10 PHP
php摘要生成函数(无乱码)
Feb 04 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
laravel学习教程之存取器
Jul 30 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
统计PHP目录中的文件数方法
Mar 05 PHP
php png失真的原因及解决办法
Nov 17 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
php时间计算相关问题小结
2016/05/09 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
JS前端框架关于重构的失败经验分享
2013/03/17 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
利用CSS3的border-radius绘制太极及爱心图案示例
2016/05/17 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
班组长竞聘书
2014/03/31 职场文书
道德之星事迹材料
2014/05/03 职场文书
学位证书委托书
2014/09/30 职场文书
办理护照工作证明
2014/10/10 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers