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 print EOF实现方法
May 21 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
PHP MPDF中文乱码的解决方式
Dec 08 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
PHP7内核之Reference详解
Mar 14 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 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中定义网站根目录的常用方法
2010/08/08 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
python常用知识梳理(必看篇)
2017/03/23 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
《理想》教学反思
2014/02/17 职场文书
教职工代表大会主持词
2014/04/01 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
小学英语复习计划
2015/01/19 职场文书
学校党支部承诺书
2015/04/30 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python